
多线程
哞哞哞咩咩咩
记录日常学习
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
12. 补充知识,线程池浅谈,数量谈,总结
补充一些知识点 虚假唤醒 wait中有第二参数(lambda)并且这个lambda中要正确判断要处理的公共数据是否存在 C++多线程编程条件变量虚假唤醒(spurious wakeup) atomic #include <iostream> #include <thread> #include<vector> #include<string> #include<queue> #include<mutex> #include<ato原创 2020-09-25 11:55:20 · 108 阅读 · 0 评论 -
11.windows临界区,其他各种mutex互斥量
1.windows临界区 和c++11中的mutex非常类似 #include <iostream> #include <thread> #include<vector> #include<string> #include<queue> #include<mutex> #include<windows.h> using namespace std; #define __WINDOWSJQ__ //一个开关,用window原创 2020-09-22 12:44:43 · 238 阅读 · 0 评论 -
10.std::atomic续谈,std::async深入谈
1.原子操作std::atomic续谈 一般原子操作争对++,–,+=,&=,|=,^=是支持的,其他的可能不支持 #include <iostream> #include <vector> #include <ctime> #include<thread> #include<mutex> #include<future> #include<atomic> using namespace std; std::at原创 2020-09-22 11:26:30 · 127 阅读 · 0 评论 -
9.future其他成员函数,shared_future,atomic
1.future其他成员函数 std::future_status::timeout 等待1秒,因为线程入口函数要5秒,所以超时了(没有等到) #include <iostream> #include <vector> #include <ctime> #include<thread> #include<mutex> #include<future> using namespace std; int mythread() {//线程入原创 2020-09-21 17:15:24 · 210 阅读 · 0 评论 -
8.async,future, packaged_task, promise
一.std::async, std::future创建后台任务并返回值 普通函数形式 #include <iostream> #include <vector> #include <ctime> #include<thread> #include<mutex> #include<future> using namespace std; int mythread() {//线程入口函数 cout << "mythread(原创 2020-09-17 21:20:28 · 109 阅读 · 0 评论 -
7.condition_variable,wait,notify_one,notify_all
condition_variable, wait, notify_one #include <iostream> #include <thread> #include<vector> #include<string> #include<queue> #include<mutex> using namespace std; class A { public: void inMsg() { for (int i = 0; i <原创 2020-08-31 20:33:34 · 231 阅读 · 0 评论 -
6.单例设计模式共享数据分析,call_once
单例设计模式 #include<iostream> #include<thread> #include<vector> #include<string> #include<queue> #include<mutex> using namespace std; class MyCAS {//单例类 private: MyCAS() {}//私有化构造函数 static MyCAS * m_instance;//静态成员变量 pub原创 2020-08-31 16:23:11 · 154 阅读 · 0 评论 -
5.unique_lock
unique_lock取代lock_guard #include <iostream> #include <thread> #include<vector> #include<string> #include<queue> #include<mutex> using namespace std; class A { public: void inMsg() { for (int i = 0; i < 10000; i++)原创 2020-08-27 15:54:14 · 136 阅读 · 0 评论 -
4.lock,unlock,lock_guard,死锁
lock,unlock成对出现 #include <iostream> #include <thread> #include<vector> #include<string> #include<queue> #include<mutex> using namespace std; class A { public: void inMsg() { for (int i = 0; i < 10000; i++) { co原创 2020-08-18 15:20:56 · 800 阅读 · 0 评论 -
3.创建多个线程,共享数据要加锁
创建多个线程 #include <iostream> #include <thread> #include<vector> #include<string> using namespace std; void myprint(int num) { cout << "子线程开始执行,编号:" << num << endl; //......... cout << "子线程结束执行,编号:" <<原创 2020-08-17 11:55:44 · 331 阅读 · 0 评论 -
2.使用datach的坑
不能传指针! #include <iostream> #include <thread> using namespace std; void myprint(const int& i, char * pmybuf) { cout << i << endl;//拷贝的引用,即使datach也是安全的,但是简单类型最好还是直接值传递 cout << pmybuf << endl;//不安全,这指针地址和主函数的mybuf一样原创 2020-08-16 23:10:27 · 791 阅读 · 0 评论 -
1.线程启动,detach,join
join #include <iostream> #include <thread> using namespace std; void myPrint() { cout << "我的线程开始运行" << endl; //------------- //------------- cout << "我的线程运行完毕" << endl; return; } int main() { //(1)创建了线程,线程执行起点(入口原创 2020-08-16 17:43:52 · 158 阅读 · 0 评论