系统调度—‘线程’
来源:互联网 发布:淘宝层级和排名关系 编辑:程序博客网 时间:2024/06/04 19:45
在前面的博文中讨论了进程的相关概念,这里重新引入一下‘线程’的概念。进程有各自独立的地址空间,所以进程间的通信是比较麻烦的,只能借助管道等才能够实现进程间通信。而linux系统中,多个线程共享进程的地址空间(也可以说是进程是一个独占资源的线程),所以线程之间的通信是非常方便的。
注:以下只针对linux系统。
★进程与线程的比较
在linux系统中,线程和进程之间的区分不是特别明显,但是它们之间还是有一些区别的:
(1)进程是系统资源分配的基本单位,线程是系统调度的基本单位。
(2)每个进程都有自己独立的地址空间,而线程之间的资源是共享的。
(3)进程间切换的系统开销较线程间切换的系统开销大。
(4)线程也有自己的私有栈,保存一些私有资源。
★线程创建和终止
头文件:#include <pthread.h>
创建: int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void* (*start_routine)(void*), void* arg);
终止: void pthread_exit(void* retval);
等待: int pthread_join(pthread_t thread, void** retval);
其中:终止线程有以下几种方法:
①从线程函数进行return。但是在主线程中return相当于终止整个进程。
②一个线程可以调用pthread_cancel终止同一进程中的另一个线程。
③线程可以调用pthread_exit终止自己。
例:
运行结果:
例:
运行结果:
★线程分离
int pthread_detach(pthread_t thread);
线程是可以进行分离的,线程可以分离自己,也可以分离子线程。一个分离后的线程是不能被其他线程回收的,它的资源是在它终止时由系统进行释放,但是当主线程退出后,分离的线程也将会退出,资源会由系统自动释放。
例:
运行结果:
本文出自 “无心的执着” 博客,转载请与作者联系!
- 系统调度—‘线程’
- Windows系统的线程调度
- Windows系统的线程调度
- 线程调度—优先级调度
- 基于线程池的线程调度管控系统
- [线程]——任务调度
- 线程调度
- 线程调度
- 线程调度
- 线程调度
- 线程调度
- 线程调度
- 线程调度
- 线程调度
- 线程调度
- 线程调度
- Linux系统超线程感知的调度算法研究
- Windows系统的线程调度与软件中断分发
- 图—并查集(解决朋友圈问题)
- 论‘进程’相关操作
- 再谈‘进程’
- ‘信号’基本概念总结
- 进程间通信—‘匿名管道’
- 系统调度—‘线程’
- JAVA 方法重载和构造函数重载---转载自阿朱
- ‘生产者-消费者’模型与‘读-写者’模型
- 动态规划-最大子数组和问题
- springmvc
- Eclipse自动补全设置与Eclipse源代码下载
- Java中的Random()函数
- Gson系列
- 1001: 图像旋转问题