我在一段代码上使用lock
。虽然关键部分很小,但很多线程都会到达那里(每秒大约100个线程)。在一些文章中,我看到this method is not suitable for heavy threading environments
。
我的问题是我们称之为环境heavy threaded
的速度是什么?
答案 0 :(得分:1)
不幸的是,我认为重线程没有具体的数字定义。一些快速谷歌搜索显示我最近的上下文切换基准数字引用上下文切换成本介于1us和30us之间。悲观地假设30us,这意味着:
(30 us/switch * 100 switch/sec) == 3ms/sec == 0.3% context-switch overhead
你提到每秒进行100次上下文切换。不用担心,但上下文切换不是全部:你还必须考虑互斥争用的成本,我建议你在自己的应用程序中测量,并使用你正在使用的特定互斥实现。
最重要的是,如果您的应用获得了可接受的吞吐量,则可以按这些速率使用此模式。我的猜测是互斥争用很可能占主导地位,因此你的关键部分的运行时间(以及运行时间的变化)可能会使这对你有效并且不适合你。