
C++线程
文章平均质量分 69
liuguangsh
这个作者很懒,什么都没留下…
展开
-
线程冲突与解决
C++中解决线程冲突的二种方式:一:互斥锁 mutex 要引用 mutex 头文件二:元子变量 atomic 在头文件 atomic 代码如下:/*全局:变量,冲突,结果不正确,速度快。mutex:结果正确,速度慢。atomic:结果正确,速度比mutex快。*/#include#include#include //线程互斥量,解决线程安全#include //原转载 2016-10-12 15:01:48 · 3083 阅读 · 0 评论 -
LAMBDA表达式与线程及线程等待和获取线程ID
本代码主要是使用LAMBDA表达式与线程的一起使用,还有线程的几个方法的测试:如:获取线程的ID、线程等待,线程等待的几种方法如下:this_thread::sleep_for(chrono::seconds(3));//线程等待 3 秒this_thread::yield();//让CPU先执行其他线程,空闲时再执行些线程this_thread::sleep_until(转载 2016-10-12 15:31:52 · 2899 阅读 · 0 评论 -
伪函数与多线程
#include#include#includeusing namespace std;//void operator ()() 对象名当作函数名,重载 ()// () 仅仅适用于当前结构体对象//不适合作为比线程参数,销毁太快struct myStruct{ myStruct() { cout << "create object" << endl; } ~myS转载 2016-10-18 15:23:08 · 368 阅读 · 0 评论 -
多线程死锁
/* 死锁:二个线程同时锁住一个变量时。 锁住一个变量之后,尽快操作完成解锁,解锁之前不要再锁住其它变量,否则会互锁(死锁)。*//* 注意死锁是因为二个函数的加锁与解锁的顺序有关...如下面的代码: 函数add1: g_mutex1.lock(); (*a)++; g_mutex2.lock(); (*b)++; g_mutex1.unlock(); g_mut转载 2016-10-19 16:39:28 · 262 阅读 · 0 评论 -
线程的交换与移动
/*编写一个程序,开启3个线程,这3个线程的ID分别为A B C每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示,如:ABCABC...依次递推。*/#include#include#include#include#includeusing namespace std;int LOOP = 10;int flag = 0;mutex m;con转载 2016-10-19 17:11:39 · 723 阅读 · 0 评论