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 · 125 阅读 · 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 · 277 阅读 · 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 · 205 阅读 · 0 评论