线程的创建pthread_create()函数(线程一)

来源:互联网 发布:linux执行sh脚本 编辑:程序博客网 时间:2024/04/20 15:15

一.并发 并行 同步 异步概念区别

并发:看起来像真正同时发生,实际并非同时发生,只不过是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是一个操作系统回填。

五、线程的四个状态:

就绪、阻塞、运行、终止。

0 0
原创粉丝点击