|
|
1
5
如果您询问阻塞内核调用是否像
更具体地说,一个阻塞调用基本上会让线程“1”在等待等待它所等待的任何东西时进入睡眠状态。如果线程_1处于休眠状态,那么线程_2将被安排运行(除非有更高优先级的东西等待运行)。
编辑:
如果你想要一种“相当自信”的方式来确定线程_1正在执行阻塞调用,那么让线程_2的优先级低于线程_1(因此通常
不
运行,除非线程_1被阻塞)并且当它运行时,它将其优先级提升到比线程_1更高的级别,直到硬件中断被传递,此时它将降低其优先级并调用
|
|
|
2
8
对内核的调用被认为是 舞台调度 或 非阻塞 .阻塞调用(例如等待从网络套接字中读取数据)当然可以被抢先,而不需要您执行任何操作。其他线程将继续运行。非阻塞内核调用可以被认为是非常快的,实际上,不管您是否可以抢占它们,这都无关紧要。 一般来说,在编写多线程代码时,您将重点放在这些线程之间如何交互,并将它们与内核的交互交由内核来管理。它设计得很好。 |
|
|
3
7
这取决于内核。经典的内核不允许抢占(除非在特定的点上它将休眠线程)。但较新的内核已经开始在内核内部启用抢占。 Linux在使用config_preempt构建时支持可抢占内核。从内核文档中:
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |