LAMBDA表达式与线程及线程等待和获取线程ID

来源:互联网 发布:海湾报警主机8301编程 编辑:程序博客网 时间:2024/06/15 00:51

本代码主要是使用LAMBDA表达式与线程的一起使用,还有线程的几个方法的测试:

如:获取线程的ID、线程等待,线程等待的几种方法如下:

this_thread::sleep_for(chrono::seconds(3));//线程等待 3 秒
this_thread::yield();//让CPU先执行其他线程,空闲时再执行些线程
this_thread::sleep_until();//到某个时刻到来之前一直等待,定时等待。

测试代码如下:

/*C++中创建多线程,建议使用LAMBDA表达式下面几个参数在 迅雷 的定时下载中都有体现 如空间下载、定时下载.......this_thread::sleep_for()//等待多少秒后执行。this_thread::yield();//CPU空闭了才执行行this_thread::sleep_unitl();//等到某个时间点时才执行this_thread::get_id()//获取线程ID*/#include<iostream>#include<thread>#include<chrono>#include<Windows.h>using namespace std;//线程等待与获取线程 IDvoid main4C(){thread th1([](){this_thread::sleep_for(chrono::seconds(3));//线程等待 3 秒//this_thread::yield();//让CPU先执行其他线程,空闲时再执行些线程//this_thread::sleep_until();//到某个时刻到来之前一直等待,定时等待。cout << this_thread::get_id() << endl;//获取线程的 ID});thread th2([](){this_thread::sleep_for(chrono::seconds(10));//线程等待 10 秒cout << this_thread::get_id() << endl;});th1.join();th2.join();cin.get();}void main4b(){thread th1([](){MessageBoxA(0, "1", "2", 0); });thread th2([](){MessageBoxA(0, "1", "2", 0); });th1.join();th2.join();cin.get();}void main4a(){auto fun = [](){MessageBoxA(0, "1", "2", 0); };thread th1(fun);thread th2(fun);th1.join();th2.join();cin.get();}


0 0
原创粉丝点击