我正在C中创建一个依赖于异步方法调用的应用程序。在我最好的迄今所作的努力,使我目前正在执行的代码看起来像这样它的跨平台:在单核处理器上创建线程
#ifdef TARGET_WINDOWS
//Windows threading API
#else
//pthreads API
#endif
我欣赏有可能是一个更好的方式来做到这一点,但是这不是我的问题点。我的问题是,单核处理器上的程序会发生什么?线程是否仍然是异步执行的(交错的指令也许),还是我坚持只在单核CPU上执行单线程?
- 人的回答是肯定这一点,这是很公平的,但只是为了让你的心智模型直记住,它不会替代* *指令(当然,它可以和你可以认为这就是超线程,但它不是在单个内核上执行多任务的通用模型)。时间片很可能是一秒钟的“重要”部分,我认为Linux通常会变化10-300毫秒。和靠近低端的Windows。更像是交叉树,而不是交叉树,因为这可能是数百万条指令的时间。 –
@SteveJessop我有一些澄清的问题。当运行不同优先级的线程时会发生什么情况。低优先级线程只有在高优先级线程完成后才运行? (鉴于http://man7.org/linux/man-pages/man7/sched.7.html说:“一个线程的调度策略决定它将被插入到具有相同静态优先级的线程列表中的位置以及它如何被插入到0123将 移到此列表中。“)。虽然对我来说,似乎即使是低优先级的线程也需要一些时间。 – qqqqq