进程与线程
进程是系统资源调度和分配的基本单位,实现了操作系统的并发; 线程是CPU资源调度与分配的基本单位,实现进程内部的并发。线程属于进程的一部分,是进程的子任务。一个进程至少包含一个线程,相同进程下的线程共享地址空间等资源。每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。
线程的创建:
线程的数据
线程就是有一个好处,使得一个进程可以并行做多件事。线程间需要共享数据,需要做好数据的同步与互斥。我们称共享的数据为临界区,临界区需要作保护。线程自身也有私有的数据,保存在线程的栈空间内,比如局部变量,默认栈空间为8MB,可以使用ulimit -a查看具体的配置,当然也可以通过设置修改栈的空间大小。还有一种独立的私有数据,通过key设置,不同的线程通过key获取到的值是可能不一样的,各个线程独立保存。
1 | int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize); |
线程的数据保护
数据保护一般通过互斥量处理。pthread_mutex_t
互斥量和条件变量结合使用,可以提高cpu处理性能。不用一直条件判断,而是等待条件触发再判断条件。
行动,才不会被动!
欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。