Viv*_*rma 3 c sockets linux networking kernel
阻塞模式是否将该特定任务置于"进程等待"状态,因为我认为非阻塞套接字需要明确地来自用户的"忙等待"或"自旋锁定"实现.或者阻塞模式套接字只不过是内核忙等待的隐式实现.
在信号量/互斥锁/监视器等锁定机制中,通常通过在阻塞状态下推送任务来实现锁定.我认为如果锁定可以做到这一点,那么也可以通过同样的方式实现套接字锁定.
我不确定,我认为轮询不是一种有效的方式,尤其是内核,因为内核总是掌握着如此多的任务.
谢谢.
不,内核中实现了阻塞套接字.进程处于非执行状态,不消耗任何CPU时间.
内核可以自由运行其他任务,直到某些外部活动会导致它唤醒任务.例如,网卡的硬件中断让它知道有数据要读取.内核读取它并将其推送到网络堆栈,最终唤醒应用程序以处理数据.
定时器的工作方式相同,但定时器中断.
内核可能实际上是在引擎盖下轮询硬件,但它不一定是......这完全取决于硬件的设计方式.
| 归档时间: |
|
| 查看次数: |
4192 次 |
| 最近记录: |