1.线程在linux中的实现
线程机制是现代编程技术中常用的一种抽象。该机制提供了在同一程序内共享内存地址空间运行的一组线程。
linux线程机制非常独特:从内核的角度来说,它并没有线程的概念。linux把所有的线程都当作进程来实现,线程仅仅被视为一个与其他进程共享某些资源的进程。
2.线程好处
- 通过为每种事件类型的处理分配单独的线程,能够简化处理异步事件的代码。
- 多进程必须使用操作系统提供的复杂机制才能实现内存和文件描述符的共享,而多线程可以访问相同的地址空间和文件描述符。
- 有些问题可以通过将其分解从而改善整个程序的吞吐量。
3.线程标识
进程ID在整个系统中是唯一的,但线程ID不同,线程ID只能只能在它所属的进程环境中有效。
线程可以通过调用pthread_self函数获得自身的线程ID
- #include <pthread.h>
- pthread_t pthread_self(void);
- 返回值:调用线程的线程ID
在编程应用中,由一个主线程创建的所有线程的PID均显现的等于其创建者(住线程)的PID。但在内核描述中,并不是这样,相关内容参考http://blog.chinaunix.net/space.php?uid=24567872&do=blog&id=100482
4.线程创建
- #include <pthread.h>
- int pthread_create(pthread_t *restrict thread,
- const pthread_attr_t *restrict attr,
- void *(*start_routine)(void*), void *restrict arg);
- 返回值:若成功返回0,否则返回错误编号
(因为不是标准库,编译时加-lpthread)
5.线程终止
单个线程可以通过下列三种方式退出,在不终止整个进程的情况下停止它的控制流。
(1)线程只是从启动例程中返回,返回值是线程的退出码。(例如:return NULL;)
(2)线程可以被同一进程其他线程取消。(调用pthread_cancel)
(3)线程调用pthread_exit。
参考资料:《linux内核设计与实现》、《UNIX环境高级编程(第2版)》
阅读(1719) | 评论(0) | 转发(0) |