什么是阻塞什么是非阻塞
时间: 2023-05-11 16:02:13 浏览: 68
阻塞和非阻塞是指在进行某个操作时,是否会等待该操作完成后再进行下一步操作。阻塞操作会一直等待直到操作完成,而非阻塞操作则会立即返回,不会等待操作完成。在编程中,常常使用非阻塞操作来提高程序的效率和响应速度。
相关问题
sem_timedwait没有阻塞是什么原因
`sem_timedwait` 函数是一个有超时限制的信号量等待函数,它的作用是等待一个信号量的值变为非零值,或者等待一个特定的时间后返回。如果 `sem_timedwait` 函数没有阻塞,可能是以下几个原因:
1. 信号量的值已经是非零值,所以 `sem_timedwait` 函数可以立即返回。
2. `sem_timedwait` 函数等待的时间是 0,这种情况下 `sem_timedwait` 函数会立即返回。
3. `sem_timedwait` 函数等待的时间已经到了,但是信号量的值仍然是 0。在这种情况下,`sem_timedwait` 函数会返回一个错误码 `ETIMEDOUT`,表示等待超时。
如果 `sem_timedwait` 函数没有阻塞,应该根据具体的情况来判断其原因,并进行相应的处理。
为什么说“async/await与Promise一样,是非阻塞的。”
async/await与Promise一样,是非阻塞的,是因为它们都是基于JavaScript的异步编程模型。在异步编程中,任务的执行不会阻塞主线程,而是在后台进行,当执行有结果时会通知主线程进行后续操作。通过使用async/await和Promise,我们可以编写更加清晰简洁的异步代码,同时也可以避免出现回调地狱等问题。