线程的创建pthread_create()函数(线程一)
2017-04-28 10:09
351 查看
一.并发 并行 同步 异步概念区别
并发:看起来像真正同时发生,实际并非同时发生,只不过是cpu的调度时间很快,单核系统中每一时刻只能执行一个进程,类似进程。
并行:真正意义上的同时发生,类似线程,但每个线程必须依赖于进程,(但按照操作系统理论严格来说,多线程并不是多个线程一起运行的.
因为多线程实际上是多个线程之间轮流执行的,就是将一个时间段分成若干个时间片,每个线程只运行一个时间片,由于时间片极短,而且电脑运行极快,线程之间切换也极快,几乎可以看做是并行运行的,也就是说可以看成是同时运行的.但实际却不是的同时运行的.
)
进程是执行程序的一次过程,程序是静态的,进程是动态的。
同步:不应该同时发生,阻止其同时发生(加锁)。
异步:独立的操作是异步,事情独立发生。
二.线程ID获取
pthread_self()
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/5fcf95e4b400af9f55e0f621b5205144)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/4a2581c4980ac395414512de01ebfe55)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/a15ac6ea8a36e3fe4ee2f03ba6acb62c)
所以pthread_t是一个 无符号的长整数(Linux下),在mac下他是一个结构体
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/6bb05da0aa87435d1a057760f29858a8)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/bd4231a6e95e7f22cad51e1dded95475)
关于线程的程序编译时候必须链接 pthread这个库 –lpthread
三、线程创建
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/851089608d94112561ae3f5ab84f2a1d)
线程创建函数四个参数解释:
第一个参数:新线程ID,创建成功系统返回。
第二个参数:新线程的属性,NULL为默认属性。
第三个参数:新线程的启动函数 函数指针: 指向形参位void* 返回值为void*类型的函数的指针。
void* thread_fun(void)
第四个参数:传递给新线程。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/dcea8aadf69746ee356f19b4ebcef881)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/4917a693c00b8b95bb5abde9f5b71450)
四、 pthread_exit()函数
pthread_exit() 与return 的区别
pthread_exit返回给操作系统,主进程不会退出,新的线程才会执行。
return指直接返回给进程,如果是主进程,则新线程不会执行。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/4b9b865bed4f5d7cc6401eef364a58a1)
函数的形参是一个void *retval retval是一个操作系统回填。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/baf8b113afd997dd18caf562548f8c07)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/3543e59124b1b9a5244c1759d5f9eaec)
五、线程的四个状态:
就绪、阻塞、运行、终止。
并发:看起来像真正同时发生,实际并非同时发生,只不过是cpu的调度时间很快,单核系统中每一时刻只能执行一个进程,类似进程。
并行:真正意义上的同时发生,类似线程,但每个线程必须依赖于进程,(但按照操作系统理论严格来说,多线程并不是多个线程一起运行的.
因为多线程实际上是多个线程之间轮流执行的,就是将一个时间段分成若干个时间片,每个线程只运行一个时间片,由于时间片极短,而且电脑运行极快,线程之间切换也极快,几乎可以看做是并行运行的,也就是说可以看成是同时运行的.但实际却不是的同时运行的.
)
进程是执行程序的一次过程,程序是静态的,进程是动态的。
同步:不应该同时发生,阻止其同时发生(加锁)。
异步:独立的操作是异步,事情独立发生。
二.线程ID获取
pthread_self()
所以pthread_t是一个 无符号的长整数(Linux下),在mac下他是一个结构体
关于线程的程序编译时候必须链接 pthread这个库 –lpthread
三、线程创建
线程创建函数四个参数解释:
第一个参数:新线程ID,创建成功系统返回。
第二个参数:新线程的属性,NULL为默认属性。
第三个参数:新线程的启动函数 函数指针: 指向形参位void* 返回值为void*类型的函数的指针。
void* thread_fun(void)
第四个参数:传递给新线程。
四、 pthread_exit()函数
pthread_exit() 与return 的区别
pthread_exit返回给操作系统,主进程不会退出,新的线程才会执行。
return指直接返回给进程,如果是主进程,则新线程不会执行。
函数的形参是一个void *retval retval是一个操作系统回填。
五、线程的四个状态:
就绪、阻塞、运行、终止。
相关文章推荐
- linux 线程创建函数pthread_create的几个传参方式
- pthread_create函数创建线程失败的原因
- 线程创建函数pthread_create的pthread_attr_t类型的参数
- 线程创建函数pthread_create
- linux 线程创建函数pthread_create的几个传参方式
- pthread_create是类Unix操作系统(Unix、Linux、Mac OS X等)的创建线程的函数。
- 对线程创建函数pthread_create的总结
- pthread_create线程创建的过程剖析
- 编写线程函数时,链接时报错:undefined refrence to 'pthread_create '
- 多线程之pthread_create创建线程
- Linux下多线程编程__线程的创建pthread_create与退出pthread_exit,等待当前线程退出pthread_join,获取线程ID pthread_self
- POSIX多线程之创建线程pthread_create && 线程清理pthread_cleanup
- pthread_create()创建线程最大个数
- 关于pthread_create创建线程, 产生segment错误。
- pthread_create线程创建的过程剖析(转)
- 创建线程时,undefined reference to 'pthread_create'问题解决
- pthread线程创建出现undefined reference to `pthread_create' collect2: error: ld returned 1 exit status
- Linux中以PTHREAD_CREATE_DETACHED属性创建线程
- 【Linux学习】pthread_create主线程与创建的新线程之间退出关系
- pthread_create线程创建的过程剖析