2024年5月25日发(作者:)

在C语言中,pthread库是用于多线程编程的库。下面是一些基

本的pthread函数和用法:

1. **pthread_create**: 用于创建一个新的线程。

```c

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void

*(*start_routine) (void *), void *arg);

```

* `thread` 是一个指向`pthread_t`类型变量的指针,这个变量将被

设置为新创建的线程的ID。

* `attr` 指定了新线程的属性,例如堆栈大小。通常设置为NULL,

表示使用默认属性。

* `start_routine` 是一个函数指针,它指定了新线程将执行的函数。

该函数应该接受一个`void*`类型的参数,并返回`void*`类型的结果。

* `arg` 是传递给`start_routine`的参数。

2. **pthread_join**: 用于等待一个线程结束。

```c

int pthread_join(pthread_t thread, void **retval);

```

* `thread` 是要等待的线程的ID。

* `retval` 是一个指向`void*`类型变量的指针,该变量将被设置为

线程函数的返回值。如果此参数为NULL,那么线程函数的返回值将

被丢弃。

3. **pthread_mutex_init**: 用于初始化一个互斥锁。

```c

int pthread_mutex_init(pthread_mutex_t *mutex, const

pthread_mutexattr_t *attr);

```

* `mutex` 是一个指向`pthread_mutex_t`类型变量的指针,该变量

将被初始化为一个互斥锁。

* `attr` 指定了互斥锁的属性。通常设置为NULL,表示使用默认

属性。

4. **pthread_mutex_lock**: 用于锁定一个互斥锁。

```c

int pthread_mutex_lock(pthread_mutex_t *mutex);

```

* `mutex` 是一个指向已经初始化的互斥锁的指针。

5. **pthread_mutex_unlock**: 用于解锁一个互斥锁。

```c

int pthread_mutex_unlock(pthread_mutex_t *mutex);

```

* `mutex` 是一个指向已经锁定的互斥锁的指针。

6. **pthread_cond_init**: 用于初始化一个条件变量。

```c

int pthread_cond_init(pthread_cond_t *cond, const

pthread_condattr_t *attr);

```

* `cond` 是一个指向`pthread_cond_t`类型变量的指针,该变量将

被初始化为一个条件变量。

* `attr` 指定了条件变量的属性。通常设置为NULL,表示使用默

认属性。

7. **pthread_cond_wait**: 用于等待一个条件变量。

```c

int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t

*mutex);

```

* `cond` 是一个指向已经初始化的条件变量的指针。

* `mutex` 是一个指向已经锁定的互斥锁的指针。在调用

`pthread_cond_wait`时,互斥锁将被自动解锁,当线程醒来时,互斥锁

将被再次锁定。