概述
C++中自带的std::thread
c11 把线程纳入标准库中
主要是:std::thread 类
#include <stdlib.h> #include <stdio.h> //c++中自带的std::thread //c11 把线程纳入标准库中 //std::thread 类 void Handler(int num) { while (1) { printf("hehe %dn", num); } } //注释类型的线程 //void Handler1() { // while (1) { // printf("hehe n"); // } // //} #include<thread> int main() { std::thread t(Handler,1); //thread类型的 t //传函数入口 //也可以是std::thread t(Handler1); //你想怎么传怎么传 //想几个参数写几个 随便写 //也就是入口函数想怎么写怎么写,怎么传怎么传 std::thread t2(Handler,2); //第二个传函数入口 t.join(); t2.join();//线程等待 //t.detach();//线程分离 //不join也可以 system("pause"); return 0; } //Makefile TEST:TEST.cc g++ $^ -o $@ -lpthread -std=c++11
互斥锁
头文件:
#include <mutex>
std::mutex lock;
lock.lock(); //加锁
lock.unlock(); //解锁
void Handler(int num) { while (1) { lock.lock(); //加锁 printf("hehe %dn", num); lock.unlock(); //解锁 } }
条件变量:
wait();//等待
notify_one();//通知
信号量:没有
读写锁:没有
原子操作:大杀器
本质上是锁——CPU指令级别的锁
自旋锁
//原子操作:大杀器 //本质上是锁——CPU指令级别的锁 //自旋锁 #include <atomic> std::atomic_int count(0); //就把 ++ 本来是三步 合成一部。 void Handler1(int num) { for (int i = 0; i < 50000;++i) { ++count; } } #include<thread> int main() { std::thread t(Handler1); //传函数入口 std::thread t2(Handler1); t.join(); t2.join();//线程等待 printf("count =%dn", (int)count); return 0; }
最后
以上就是可耐玫瑰为你收集整理的Linux系统编程(22)——C++中自带的std::thread的全部内容,希望文章能够帮你解决Linux系统编程(22)——C++中自带的std::thread所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复