我有一个关于Windows和Linux上任何编程语言的线程(或纤程)的一般问题:
有没有可能有一个“第二线程待命”,并让它迅速进入行动,并帮助完成一个小任务几毫秒,而不被抢先?我应该补充说,我希望没有互斥锁和自旋锁的代码清晰可读。
要说明传统线程池不适用于小任务,请考虑C#中的矩阵求逆问题。我正在使用Ivan Kuckir的。我复制了他的Invert函数,并将其命名为InvertParallel,如下所示:
public Matrix InvertParallel() // modified from Ivan's Invert(), see link above
{
if
根据vmstat的说法,我的Linux服务器(2xCo2duo2.5 GHz)经常每秒进行大约20k的上下文切换。
# vmstat 3
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 7292 249472 82340 2291972 0 0 0 0 0 0 7
我一直在想,在上同时运行的多个程序如何使用寄存器而不引起Windows上程序之间的冲突。
Windows OS是否使用“虚拟寄存器”来避免这种情况(多个程序使用相同的寄存器)?
因此,例如,如果两个程序使用eax寄存器,操作系统真的会改变物理eax寄存器吗?
还是像我前面提到的那样使用一些“虚拟寄存器”?