C++ Boost库:线程库 thread 跨平台多线程
文章目录1. Windows、Linus多线程2. thread库简介3. 示例代码1. Windows、Linus多线程平台WindowsLinux创建线程CreateThread()_beginthreadex()pthread_create()销毁线程ExitThread()TerminateThread()pthread_exit()pthread_cancel()暂停线程SuspendT
C++ Boost库:简介和第一个示例程序
C++ Boost库:数值转换 lexical_cast
C++ Boost库:字符串格式化 format
C++ Boost库:字符串string_algo
C++ Boost库:字符串算法string_algo
C++ Boost库:类型推导BOOST_AUTO/BOOST_TYPEOF
C++ Boost库:分词处理库 tokenizer
C++ Boost库:windows下编译Boost库
C++ Boost库:日期时间库 date_time
C++ Boost库:智能指针scoped_ptr
C++ Boost库:数组智能指针 scoped_array
C++ Boost库:共享所有权的智能指针 shared_ptr
C++ Boost库:工厂函数 make_shared
C++ Boost库:共享有权的数组智能指针shared_array
C++ Boost库:弱引用智能指针 weak_ptr
C++ Boost库:禁止拷贝 nocopyable
C++ Boost库:计时器 timer
C++ Boost库:普通数组array
C++ Boost库:散列容器 unordered_set、unordered_multiset
C++ Boost库:散列容器 unordered_map、unordered_multimap
C++ Boost库:双向映射容器 bimap
C++ Boost库:环形缓冲区 circular_buffer
C++ Boost库:动态多维数组 multi_array
C++ Boost库:使用property_tree解析XML和JSON
C++ Boost库:简化循环 BOOST_FOREACH
C++ Boost库:随机数库 Random
C++ Boost库:引用库 ref
C++ Boost库:绑定库 bind
C++ Boost库:线程库 thread 跨平台多线程
C++ Boost库:互斥量 mutex
1. Windows、Linus多线程
平台 | Windows | Linux |
---|---|---|
创建线程 | CreateThread() _beginthreadex() | pthread_create() |
销毁线程 | ExitThread() TerminateThread() | pthread_exit() pthread_cancel() |
暂停线程 | SuspendThread() | — |
恢复线程 | ResumeThread() | — |
等待线程 | WaitForSingleObject() | pthread_join() |
2. thread库简介
Boost
的 thread
库为C++
增加了线程处理能力,它提供简明清晰的线程、互斥量等概念,可以很容易的创建 跨平台的多线程应用。它支持使用最广泛的 Windows
和POSIX
线程规范(Unix
下应用程序共同遵循的亠种规范),无需修改就可以在 windows
、Unix
、Linux
等系统上编译运行
使用需要包含的头文件
#include<boost/thread.hpp>
使用的静态库:
#pragma comment(lib, "libboost_thread-vc100-mt-gd-x32-1_67.lib")
3. thread 类
thread(thread fun)
;参数可以是函数对象或者函数地址。当一个 thread
执行完成时,这个子线程就会消失。但这个线程对象不会消失,它仍然是一个还处在它的生存期的C++对象。
join()
:一直阻塞等待,直到当前线程结束time_join()
:线程未结束时,最多等待多少时间后返回。thread::yield()
:当前线程放弃余下的时间片。this_thread::sleep(chrono::seconds(1));
:让线程睡眠
4. 示例代码
#include<boost/thread.hpp>
using namespace boost; //名字空间
#include<iostream>
using namespace std;
#pragma comment(lib, "libboost_thread-vc100-mt-gd-x32-1_67.lib")
void ThreadFun(string & threadName)
{
for (size_t i = 0; i < 5; i++)
{
printf("%s 执行!\n", threadName.c_str());
//线程睡眠
this_thread::sleep(posix_time::seconds(1));
}
}
int main()
{
//定义线程对象,线程执行函数,函数参数,构造
thread t1(ThreadFun, string("线程1"));//立即运行
thread t2(ThreadFun, string("线程2"));//立即运行
//t1.join();//先阻塞,等待子线程执行完毕后返回
//t2.join();//先阻塞,等待子线程执行完毕后返回
//如果线程还没结束,最多等待3秒
t1.timed_join(posix_time::seconds(8));
cout << "main结束!" << endl;
getchar();
return 0;
}
运行结果:
更多推荐
所有评论(0)