Author:QQ174554431
#include "stdafx.h"
#include <boost/bind.hpp>
#include <boost/thread/thread.hpp>
#include <iostream>
void Thread1()
{
int num = 0;
bool flag = true;
while(flag)
{
std::cout << "----Thread1----" <<std::endl;
boost::this_thread::sleep( boost::posix_time::millisec(50) );
num++;
if(num ==100)
{
flag = false;
}
}
}
void Thread2()
{
int num = 0;
bool flag = true;
while(flag)
{
std::cout << "----Thread2----" <<std::endl;
boost::this_thread::sleep( boost::posix_time::millisec(100) );
num++;
if(num ==100)
{
flag = false;
}
}
}
void Thread3()
{
int num = 0;
bool flag = true;
while(flag)
{
std::cout << "----Thread3----" <<std::endl;
boost::this_thread::sleep( boost::posix_time::millisec(200) );
num++;
if(num ==100)
{
flag = false;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
boost::thread *thread1 = new boost::thread( boost::bind(&Thread1));
boost::thread *thread2 = new boost::thread( boost::bind(&Thread2));
boost::thread *thread3 = new boost::thread( boost::bind(&Thread3));
thread1->join();
thread2->join();
thread3->join();
return 0;
}
明显停顿时间更长的Thread3在最后出现最多。
----Thread1----
----Thread2----
----Thread3----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread3----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread3----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread3----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread3----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread3----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread3----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread3----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread3----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread1----
----Thread1----
----Thread2----
----Thread1----
----Thread1----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread2----
----Thread3----
----Thread2----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
----Thread3----
Press any key to continue . . .
分享到:
相关推荐
FFmpeg是一款开源的多媒体处理工具,它包含了各种编解码...在分析和使用提供的压缩包文件"ffmpegH264Opt"时,开发者可以深入研究源代码,理解并学习如何在FFmpeg中实现多线程和硬件优化,以优化自己的多媒体应用程序。
本文主要介绍了 Boost.Asio 的多线程模型的相关知识,通过实践代码的方式,详细介绍了 Boost.Asio 的多线程模型的两种实现方式,及其特点和优缺点。 知识点1:多线程模型的两种实现方式 Boost.Asio 提供了两种支持...
5. **并发与线程** (Concurrency and Threads):Boost.Thread库提供了线程管理和同步原语,如互斥量、条件变量等,使得在C++中编写多线程程序更加容易。 6. **日期和时间** (Date and Time):Boost.Date_Time库提供...
4. **线程与并发**(Threads and Concurrency):Boost.Thread提供了线程管理和同步原语,如互斥锁、条件变量等,支持多线程编程。 5. **正则表达式**(Regex):实现了符合POSIX标准的正则表达式库,可以方便地...
它旨在提高C++的标准库功能,为C++提供现代编程技术,如模板元编程、智能指针、正则表达式、多线程支持、文件系统操作等。 2. **Boost库组件**: - **智能指针**(Smart Pointers):如`shared_ptr`、`unique_ptr`...
总结而言,Boost.Threadpool为C++开发者提供了一种高效、灵活的线程管理工具,允许他们在多任务环境中以更智能的方式控制并发执行。通过理解并熟练使用线程池和优先级任务处理,开发者可以优化程序性能,减少资源...
3. **多线程支持**:Boost.Threads库提供了线程管理和同步原语,如互斥量、条件变量和信号量,使C++能够处理并发和多处理器编程。 4. **正则表达式**:Boost.Regex库提供了强大的正则表达式处理功能,与C++标准库中...
当需要在多线程环境中处理定时任务时,可以采用线程池的方式调用 `io_context::run()`,并通过 `io_context::strand` 来确保对共享资源的安全访问。 示例代码如下(由于原始代码片段不完整,这里给出一个更完整的...
总结,C++实现跨平台线程池需要理解多线程编程的基本原理,熟练运用Boost库,以及掌握同步和通信机制。通过这样的线程池,开发者可以在不同平台上构建高性能、低延迟的多线程应用程序,提高系统的并发处理能力。
POSIX线程库,简称为pthreads,是Linux标准的一部分,提供了跨平台的多线程编程接口。使用pthreads库,我们可以自定义线程池的结构和行为。 #### 1. 创建线程池 首先,我们需要定义一个结构体来存储线程池的相关...
3. **并发支持**:Rust的并发模型基于轻量级线程(Green Threads)和通道,这使得在Voronoi图的计算过程中实现并行化变得容易。可以利用这个特性提高大规模数据处理的性能。 4. **错误处理**:Rust鼓励显式的错误...
5. **Boost.Threads**: Boost.Threads库提供了多线程编程的接口,包括线程的创建、同步(如互斥量、条件变量)以及线程安全的容器,是C++中进行并发编程的重要工具。 6. **Boost.Functor**: Boost.Functors,即仿...
这个项目可能使用了如libcurl这样的库来处理HTTP请求,通过多线程或多路复用技术实现了并行执行,同时也提供了超时管理机制。通过查看源代码,我们可以学习如何在C/C++中优雅地处理这些问题,包括错误处理、并发控制...
《七周七并发模型——C++并发实践》 在编程领域,并发是现代软件开发中的一个核心主题,尤其是在多核...通过实践这些示例,你将能更好地理解和掌握并发编程的关键概念和技术,从而编写出更加高效、安全的多线程程序。
在Linux系统中,C++与curl库结合...这个示例展示了如何在Linux环境下使用C++和libcurl库实现文件下载,包括检查和创建目标目录以及使用多线程进行并发下载。通过这种方式,你可以高效地从网络上获取并存储大量数据。
- `[-threads ]`: 设置 Fetcher 线程数,默认为 10。 - `[-depth ]`: 设定爬虫的深度,默认为 5。 - `[-topN ]`: 每次迭代限制处理的前 N 个记录,默认为 Integer.MAX_VALUE。 2. **ReadDb 命令** `bin/nutch ...
《C++并发编程实战》是一本深入探讨C++并发编程技术的专业书籍,其源码库"Cpp-Concurrency-in-Action-master"提供了丰富的示例代码,旨在帮助开发者掌握多线程和异步处理的核心概念与实践技巧。在C++中,并发编程是...
Windows纤程,也被称为轻量级线程(Lightweight Threads),是Windows操作系统中的一种线程实现方式,它在用户模式下运行,相比传统的进程或线程,纤程具有更低的开销和更快的切换速度。在Windows系统中,纤程主要...
pthreadGC2.dll是一个动态链接库(DLL)文件,主要用于支持多线程编程。在Windows操作系统中,DLL文件是程序共享功能、代码和数据的一种方式,它们可以被多个应用程序同时调用,以节省内存并提高效率。pthreadGC2....
在多线程编程中,选择正确的线程库至关重要,因为它直接影响程序的性能和并发行为。Ctryer项目旨在帮助开发者了解如何在CMake中配置和测试这些库。 描述中提到的"晶状体"可能是一个笔误,因为通常在IT上下文中,...