回调函数、同步、异步、阻塞、非阻塞、D-BUS等概念的理解
同步、异步与阻塞、非阻塞 这个几个概念很容易被混淆。这些概念基本都是使用在多个部件进行协作或需要在一定时间内完成的场景中。 首先,将这几个概念的定义和应用场景分析一下: 同步、异步 同步 同步的概念是应用在线程上,线程之间的同步是指两个或多个线程对同一个资源的协调使用。 那么什么是同步函数哪? 仍然与线程和资源有关。这里的资源,可以看做线程的操作任务。通常,此时同步函数内有对资源的同步操作,如mutex等。 当一个线程调用一个同步函数时(例如:该函数用于完成写文件任务),如果该函数没有立即完成规定的操作,则该操作会导致该调用线程的挂起(将CPU的使用权交给系统,让系统分配给其他线程使用),直到该同步函数规定的操作完成才返回,最终才能导致该调用线程被重新调度。 异步 而异步函数,则是即使函数中的操作没有完成,没有结果返回,主线程也不会被阻塞。 而函数的任务则可能由其他线程或子线程来完成。完成后,再通知调用主线程,主线程内应该有相应的机制等待或响应处理结果(这里又是一个主线程对函数结果进行等待处理的过程)。 而当调用结果出来时,通知主线程的方式,即异步调用的实现方式有哪些? 回调函数(register, response)、event(windows)、消息(windows) 阻塞、非阻塞 不同的背景知识,对这些概念的使用范围也不同,这里特指网络IO的阻塞、非阻塞。另外多路IO,