Ale*_*lex 3 c c++ winapi multithreading posix
众所周知,如果执行线程大于处理器核心数,则线程在某些时隙(量子)之间在它们之间切换.这适用于Win/*nix.但是,为线程切换实现了什么机制,它是在特定时隙启动的硬件中断,不是吗?
这个中断(IRQ)是多少,我可以更改/设置此时间的值(时隙),以及如何在短时间内关闭此中断,以获得对性能(实时)部分代码的关键性(通过使用WINAPI/Posix)?
您无法关闭OS的定时器中断; 它们在操作系统本身内进行管理,并且是正确运行所必需的.在大多数Unix下,您可以使用sched_setscheduler
和/或pthread_setscheduler设置调度策略
SCHED_FIFO,和sched_setparam/ pthread_setschedprio来设置优先级; 除非它具有更高的优先级,否则您将保证不会被任何东西打断.
在Linux下,至少(以及我曾经使用的其他Unix下),也可以将页面锁定到实际内存中,这样就不会出现页面错误(这会导致你等待磁盘)访问).Linux中的功能是mlock.
请注意,您可能需要特殊权限才能更改全局调度程序或使用mlock.
| 归档时间: |
|
| 查看次数: |
2288 次 |
| 最近记录: |