并发,并行的一些浅显认识

1, 一个单核cpu一个时刻只能处理一条线程。

2, 单核cpu使用超线程技术可以在一个时刻处理两条线程
超线程技术并不是使单核cpu产生两个核心,只是提供两个逻辑线程。效果并没有双核的强。

3,2核4线程,4核8线程,这些都是使用超线程技术才多出一倍的线程数。
有以上信息来看并发,并行:
并发:当多个线程在操作的时候,如果只有一个单核CPU没有超线程,同一时刻只能有一个线程被执行,但是多个线程指令被轮流的切换执行,在宏观上看来是多个线程同时执行,但实际上并不是,他们是轮流执行的。
并行:这个概念是对多核来说的。同一时刻多个线程同时执行,当一个内核执行一个线程时,另一个内核也在执行另外的线程,两个线程互不争夺cpu资源。
通过以上的概念可以看到线程和并发并行没有直接的关系,线程安全也就和并发并行没有关系。

4, 到了这里又涉及到了同步异步,阻塞非阻塞
在并发编程中涉及到这四个概念
同步:调用者调用一个函数时,调用者等到这个函数执行完返回结果,才继续执行下面的代码,这是同步。
异步:和同步相反,调用者调用一个函数不会等这个函数返回,继续向下执行。
阻塞:调用结果返回之前,当前线程会被挂起,直到函数得到结果返回,才继续执行。
非阻塞:不能立即得到结果前,该函数不会阻塞当前线程,会立即返回。
这里阻塞和同步好像没有什么不同,但是阻塞应该是对线程来说的。

猜你喜欢

转载自blog.csdn.net/songjunwei1/article/details/86592843