C++
文章平均质量分 75
瞎折腾啥啊
这个作者很懒,什么都没留下…
展开
-
C++原子操作
这个例子与第一个宽松模型的例子本质上没有区别,仅仅只是将原子操作的内存顺序修改为了 memory_order_seq_cst,有兴趣的读者可以自行编写程序测量这两种不同内存顺序导致的性能差异。在此模型下,单个线程内的原子操作都是顺序执行的,不允许指令重排,但不同线程间 原子操作的顺序是任意的。在此模型下,我们可以进一步加紧对不同线程间原子操作的顺序的限制,在释放 std::memory_order_release 和获取 std::memory_order_acquire。对此有什么办法能够适当的加速呢?原创 2024-07-09 17:55:40 · 839 阅读 · 0 评论 -
threadpool线程池
这里我们使用condition_variable实现线程同步,当没有任务执行时,condition_variable使线程处于等待状态,当有任务进入队列后,调用notify_one唤醒一个等待的线程处理任务,处理完成后线程又恢复到等待状态等待下一次被唤醒。为了防止竞争,条件变量总是和一个互斥锁结合在一起,通常情况下这个锁是 std::mutex,并且管理这个锁的只能是 std::unique_lock<std::mutex> RAII 的模板类。另外一个线程使条件成立,给出信号,从而唤醒被等待的线程。原创 2024-07-09 11:46:01 · 445 阅读 · 0 评论 -
C++内存重叠
内存重叠:拷贝的目的地址在源地址范围内。所谓内存重叠就是拷贝的目的地址和源地址有重叠。其中void* strcpy(void * desc, const void *src)void * memcpy(void *desc, const void * src, int count)均为对内存重叠做出处理。void *memmove(void *desc, const void* s...原创 2018-07-18 10:24:20 · 299 阅读 · 1 评论