一.并发 并行 同步 异步概念区别
并发:看起来像真正同时发生,实际并非同时发生,只不过是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是一个操作系统回填。
五、线程的四个状态:
就绪、阻塞、运行、终止。