🌈 style:
This commit is contained in:
@@ -299,3 +299,74 @@ struct timeval {
|
||||
此外都和标准信号一样
|
||||
|
||||
## 线程(强烈异步)
|
||||
|
||||
### 线程的概念
|
||||
|
||||
会话-->进程-->线程
|
||||
|
||||
一个正在运行的函数。
|
||||
|
||||
`main`函数可以叫做main线程,不应该说主线程,线程之间平等。
|
||||
|
||||
`posix`线程是一套标准,而不是实现。
|
||||
`openmp`线程。
|
||||
|
||||
例如,线程标识: `pthread_t`, 具体类型怎么实现是不知道的
|
||||
在linux环境,可以通过`ps axm`或者`ps -ax -L`查看线程信息。
|
||||
发现线程消耗了进程号。
|
||||
|
||||
```c
|
||||
#include <pthread.h>
|
||||
//* Compile and link with -pthread
|
||||
|
||||
/**
|
||||
* 比较两个pthread_t是否相等
|
||||
* @param: t1: pthread_t
|
||||
* @param: t2: pthread_t
|
||||
*
|
||||
* @return: 相等返回非0,不相等返回0
|
||||
*/
|
||||
int pthread_equal(pthread_t t1, pthread_t t2);
|
||||
|
||||
/**
|
||||
* 获取当前线程的pthread_t
|
||||
* @return: 当前线程的pthread_t
|
||||
*/
|
||||
pthread_t pthread_self(void);
|
||||
|
||||
```
|
||||
|
||||
### 线程的操作
|
||||
|
||||
创建,终止,取消,栈的清理
|
||||
|
||||
线程的调度取决于调度器策略。
|
||||
|
||||
```c
|
||||
#include <pthread.h>
|
||||
// Compile and link with -pthread
|
||||
|
||||
/**
|
||||
* 创建线程
|
||||
* @param: thread: 线程ID指针
|
||||
* @param: attr: 线程属性指针
|
||||
* NULL: 默认属性
|
||||
* @param: start_routine: 线程函数指针
|
||||
* void *(*)(void *)
|
||||
* @param: arg: 线程函数参数
|
||||
*
|
||||
* @return: 成功返回0,失败返回errCode
|
||||
* 建议使用strerror而非perror
|
||||
*/
|
||||
int pthread_create(pthread_t * thread,
|
||||
const pthread_attr_t *attr,
|
||||
void *(*start_routine)(void *),
|
||||
void *arg);
|
||||
|
||||
```
|
||||
|
||||
### 线程的同步
|
||||
|
||||
### 线程属性,线程同步的属性
|
||||
|
||||
### 重入,线程与信号,线程与`fork`
|
||||
|
||||
Reference in New Issue
Block a user