cpp
「已注销」
这个作者很懒,什么都没留下…
展开
-
一个简易读写锁
发点牢骚:csdn上实在找不到读并行写互斥的读写锁。。所以自己写了一个 class rw_mutex{ private: std::condition_variable __cond_v; std::atomic_int __r_threads; std::mutex __inner_lock; std::atomic_bool __w_thread; public: rw_mutex():__r_threads(0),__w_thread(0){} void r_lock(); voi原创 2022-05-14 11:29:48 · 118 阅读 · 0 评论 -
记录下原子操作的同步以及内存顺序
先解释几个点: 0.1、同步关系synchronizes-with 比如两条指令A和B是同步关系,则A是B的条件;A发生后B才能继续,且A之前的动作都发生在B前 0.2、先后关系happens-before:A之前的动作X,B之后的动作Y,X在Y前面。类似同步关系 1、memory_order_release的对象,会让其他所有线程,以memory_order_require方式看到的结果一致 2、memory_order_acquire会阻止原子操作之后的所有读和写被重排到原子操作之前 memo原创 2022-05-08 15:52:41 · 266 阅读 · 0 评论 -
cpp并发实战 第四章小结
这篇文章的作用是提取这一节中重要的精华。 0、cond_v 没啥好说的。用wait做锁和cpu的让出,和单纯的等待条件满足 --------------- 1、future<T>fu=async(fu); 启动一个线程做异步任务;或者直接执行任务,同步。可选 以函数的return作为阻塞get()结束的标志 ----- 2、package_task<T()> task(fn); task(); 把一个任务包装。可以被future获取 fu=task.get_futu原创 2022-05-07 15:14:03 · 194 阅读 · 0 评论