11.4创建线程
来源:互联网 发布:出国旅游多少钱 知乎 编辑:程序博客网 时间:2024/05/29 14:14
在传统的UNIX进程模型中,一个进程仅有一个控制线程。从概念上讲,这与基于线程的模型中的一个进程只包含一个线程是一样的。
在pthreads下,当一个程序运行时,它也是以一个有一个控制线程的进程形式启动的。一个程序运行的时候,在它创建更多的控制线程前,这个程序与传统的进程是无异的。可以调用 pthread_create函数来新增线程。
如果创建成功,返回0,失败返回错误代码。
如果pthread_create 成功,tidp 指向的内存位置被设置为新建线程的线程ID。
attr 参数用来自定义线程的属性。在第12.3节,我们会详细讲解线程的属性,但是,现在,我们设置attr为NULL,来创建有默认属性的线程。
新线程的起始运行地址是start_rtn函数的入口地址。如果你要给start_rtn传递多个参数,你需要把它们存储在一个结构中,并把这个结构的地址传给arg参数。
example:
thread.c
如果按一般的编译命令,会出现错误 undefined reference to `pthread_create'如下:
sunny@sunny-desktop:~/Desktop$ gcc thread.c -o thread
/tmp/ccK7lPym.o: In function `main':
thread.c:(.text+0x83): undefined reference to `pthread_create'
collect2: ld returned 1 exit status
问题原因:
pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。
解决方法如下:
sunny@sunny-desktop:~/Desktop$ gcc thread.c -o thread -lpthread
sunny@sunny-desktop:~/Desktop$ ./thread
main thread: pid 3734 tid 3079206592 (0xb788f6c0)
new thread: pid 3734 tid 3079203696 (0xb788eb70)
sunny@sunny-desktop:~/Desktop$
- 11.4创建线程
- 创建线程
- 创建线程
- 创建线程
- 线程创建
- 线程创建
- 创建线程
- 创建线程
- 创建线程
- 创建线程
- 线程创建
- 创建线程
- 线程创建
- 创建线程
- 创建线程
- 创建线程
- 线程创建
- 创建线程
- C的xml编程-libxml2
- mysql 用户的管理
- 64位linux centOS 5.5 安装 Apache+Mysql+PHP+GD
- android使用 2D 方法实现倒影特效
- GUN gcc 中文手册
- 11.4创建线程
- sscanf()
- 自动化测试(Selenium Grid+Java)--Selenium有用篇
- 程序员应知——技术债务
- XML文件格式语法及DTD (转)
- 对程序员职业的一些建议
- sim卡与imei号和手机号码之间的关系
- 关于camera:基于S12单片机的循迹小车视觉系统设计与优化
- ZigBee学习