1
4
我从Java的角度回答:这是不可能的。你能控制的最好的就是
thread priority
过程
正如您可能猜到的,这确实是全局设置了关联性,而不是基于您在Java中创建的线程。 |
2
15
与其他一些受访者的建议相反,对于某些系统(当然是高频交易,无疑还有许多其他非常低延迟的系统,如搜索引擎),将线程绑定到CPU核心(或者对于超线程核心,单个CPU线程)可以带来巨大的性能优势。 天真但越来越被拒绝的观点是,增加线程(在合理范围内)会增加此类系统的吞吐量。然而,越来越多的证据表明 如果设计得当 ,在大多数处理过程中使用很少线程的解决方案的性能可能会比高并发性解决方案有相当大的提高—有时是10倍,甚至100倍。 其主要原因是语境转换。上下文切换是一个CPU为当前线程刷新其工作环境以缓存RAM(如果幸运的话)或主RAM(如果不幸运的话),并读取下一个线程的工作环境的过程—这是低延迟系统可以执行的最昂贵的操作之一。
要在Java中以独立于操作系统的方式实现线程关联(CPU绑定)任务,您可以使用Peter Lawrey的Java线程关联库(也链接到下面)。还要注意一个例子,在这个例子中,Peter将一个reader线程绑定到一个超线程核心的一个超线程上,将一个writer线程绑定到另一个超线程上,我可以想象这个技巧会带来可观的好处(尽管我没有尝试过)。 巴尼 http://lmax-exchange.github.io/disruptor/ https://github.com/peter-lawrey/Java-Thread-Affinity/wiki/How-it-works |
3
4
在Windows上,可以使用 SetThreadAffinityMask |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
rhymes · 如何让线程操作相同的java列表 2 年前 |