线程是进程内部的一个执行单元,一个进程可以有多个线程来构成,
举个例子:一个公司计划完成一个比较庞大的项目,通常情况下,会将人员划分为若干个小组,这就好像是一个进程可以有若干个线程一样。每个小组的分工不同,但是他们共享各个项目的资源,也接受整个项目的管理与调度。
线程的基本操作包括线程的创建,合并,终止,以及线程的属性。
线程的同步,包括互斥量,条件变量和信号量3种方式。
多线程有什么好处?
1.提高应用程序的影响速度
2.提高多CPU系统的效率
1.线程的创建
pthread_create
2.线程的合并
pthread_join
3.线程的终止
线程自身调用pthread_exit函数
其他线程调用pthread_cencel函数
4.线程的属性
1.线程的分离状态
pthread_attr_setdetachstate
2.线程的优先级
pthread_attr_getschedparam
5.线程的同步
1.互斥量
pthread_mutex mutex; //定义互斥量
pthread_mutex_init (&mutex,NULL);//互斥量初始化
pthread_mutex_lock(&mutex);//加锁
...//进行的操作
pthread_mutex_unlock(&mutex);//解锁
2.条件变量
pthread_cond_t cond;//定义条件变量
pthread_cond_signal(&cond); //条件变量
pthread_cond_wait(&cond,&mutex);//阻止线程
3.信号量
sem_t sem;//定义信号量
sem_wait(&sem);//阻止当前线程
sem_init(&sem,0,0);//初始化信号量
sem_post(&sem);//激活当前线程
sem_destroy(&sem);//注销信号量
常见面试题。
1.什么是线程?相比于进程,主要有哪些优点?
答:线程运行与进程空间之中,它是进程内部的一个执行单元。相比于进程,线程的优点主要表现在:系统资源小,切换快,是节俭的多任务操作方式;进程间的通信机制更加高效。
2.实现线程见同步主要有哪几种方法?
答:互斥量,条件变量,信号量。
阅读(1176) | 评论(0) | 转发(0) |