Linux多线程
概念
进程:一个正在执行的程序,它是资源分配的最小单位
进程中的事情需要按照一定的顺序透个进行,那么如何让一个进程中的一些事情同时执行?
线程
线程:有时又称轻里级进程,程序执行的最小单位,系统独立调度和分派cu的基本单位,它是进程中的一个实
体。一个进程中可以有多中线程,这些线程共享进程的所有资源,线程本身只包含一点必不可少的资源。
进程出现了很多弊端,一是由于进程是资源拥有者,创建、微消与切换存在较大的时空开销,因此需要引入轻型进
程:二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。
并发是指在同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执
行的效果。看起来同时发生,实际上单核内轮询执行。
并行是指在同一时刻,有多条指令在多个处理器上同时执行。真正的同时发生
同步:彼比有依赖关系的调用不应该“同时发生”,而同步就是要阻止那些“同时发生”的事情
异步的解念和同步相对,任何两个彼此独立的操作是异步的,它表明事情独立的发生
主线程
- 当c程序运行时,首先运行main函数。在统程代码中,这个特殊的执行流被称作初始线程或者主线程。你可以在初始线程中做任何普通线程可以做的串情。
2、主线程的特殊性在于,它在main函数返回的时候,会导致进程结束,进程内所有的线程也将会结束。这可不是一个好的现象,你可以在主线程中调用pthread_exit函数,这样进程就会等待所有线程结束时才终止。 - 主线程接受参数的方式是通过argc和argv,而普通的线程只有一个参数”void *”
- 在绝大乡数情况下,主统程在默认堆栈上运行,这个堆栈可以增长到足够的长度。而普通线程的堆栈是受限制的,一旦溢出就会产生错误
主线程的创建
1、主线程是随着进程的创建而创建
2、其他线程可以通过调用函数来创建,主要调用pthread_create
请注意,新线程可能在当前线程从函数pthread create返回之前就已经运行了,甚至新线程可能在当前线程从函数pthread create返回之前就已经运行完毕了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 吾辈之人,自当自强不息!!
评论