我正在尝试实现支持并发插入的二叉树(甚至可能在节点之间发生),但无需为每个节点分配全局锁或单独的互斥锁或互斥锁.相反,分配的此类锁的数量应该是使用树的线程数量级.
因此,我最终遇到了一种锁定护航问题.更简单地解释一下,当两个或多个线程执行以下操作时,可能会发生这种情况:
1 for(;;) {
2 lock(mutex)
3 do_stuff
4 unlock(mutex)
5 }
也就是说,如果线程#1在一个"cpu突发"中执行指令4-> 5-> 1-> 2,那么线程#2将从执行中匮乏.
另一方面,如果pthreads中存在用于互斥锁的FIFO类型锁定选项,则可以避免这样的问题.那么,有没有办法在pthreads中实现FIFO类型的互斥锁?可以改变线程优先级吗?
为什么可以在内存中存储Byte(8bit)而不是Bit(1bit)的最小值?即使布尔值也存储为字节.我们是否会将最小的数字压缩到32或64位,就像CPU上的寄存器一样?