Wha*_*tIf 8 c c++ multithreading mutex locking
我一直在寻找试图找出Linux中ac/c ++进程的最大互斥量是多少而没有成功.还有,有办法修改这个数字.我正在阅读的书中提到了如何找到Linux中允许的最大线程数以及如何修改此数字但没有提到互斥锁.
Enz*_*ber 13
检查这个pthread_mutex_init.
为何没有限定
为最大互斥量和条件变量数定义符号但被拒绝,因为这些对象的数量可能会动态变化.此外,许多实现将这些对象放入应用程序内存中; 因此,没有明确的最大值.
mutex可能比其他内存.嗯,我不知道,但我发现了一些有趣的材料:
这篇关于Mutex Work如何说明成本的文章:
费用
关于互斥锁的成本,有一些兴趣点.第一个也是非常重要的一点是等待时间.您的线程应该只花费一小部分时间等待互斥锁.如果他们经常等待,那么你就失去了并发性.在最坏的情况下,许多线程总是试图锁定相同的互斥锁可能导致性能比服务于所有请求的单个线程更糟糕.这实际上不是互斥体本身的成本,而是并发编程的一个严重问题.
互斥锁的开销成本与测试和设置操作以及实现互斥锁的系统调用有关.测试和设置可能是非常低的成本; 对于并发处理至关重要的CPU有充分的理由使其高效.然而,我们忽略了另一条重要指令:围栏.这用于所有高级互斥锁,并且可能比测试和设置操作具有更高的成本.比系统调用更加昂贵.您不仅遭受系统调用的上下文切换开销,内核现在在其调度代码中花费一些时间.
所以我猜他们在EAGAIN错误上谈论的成本涉及CPU或者internal kernel structures.也许两者.也许有些内核错误......老实说,我不知道.
我选了一些你可能会感兴趣的问答.好读!
| 归档时间: |
|
| 查看次数: |
4613 次 |
| 最近记录: |