C语言中多线程编程33


多线程编程是一种利用多个线程同时执行多个任务的技术。在C语言中,可以使用pthread库来创建和管理线程。

pthread库

pthread库提供了以下常见的函数:pthread_create:创建新线程。
pthread_join:等待线程完成。
pthread_detach:分离线程,使其不再等待。
pthread_mutex_init:初始化互斥锁。
pthread_mutex_lock:锁定互斥锁。
pthread_mutex_unlock:解锁互斥锁。

创建线程

要创建新线程,可以使用pthread_create函数。它的语法如下:```c
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
```
* thread:线程标识符。
* attr:线程属性。
* start_routine:线程函数。
* arg:传递给线程函数的参数。

线程函数

线程函数是线程执行的任务。它的语法如下:```c
void *thread_function(void *arg);
```
* arg:从pthread_create函数传递的参数。

等待线程完成

要等待线程完成,可以使用pthread_join函数。它的语法如下:```c
int pthread_join(pthread_t thread, void value_ptr);
```
* thread:线程标识符。
* value_ptr:(可选)用于存储线程函数返回的指针。

互斥锁

互斥锁用于保护共享资源。它确保一次只能一个线程访问共享资源。初始化互斥锁的语法如下:```c
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
```
* mutex:互斥锁变量。
* attr:互斥锁属性。

锁定互斥锁的语法如下:```c
int pthread_mutex_lock(pthread_mutex_t *mutex);
```
* mutex:互斥锁变量。

解锁互斥锁的语法如下:```c
int pthread_mutex_unlock(pthread_mutex_t *mutex);
```
* mutex:互斥锁变量。

示例

以下是一个C语言多线程编程示例:```c
#include
#include
#include
void *thread_function(void *arg) {
int *number = (int *)arg;
printf("Thread %d: %d", *number, *number * *number);
return NULL;
}
int main() {
pthread_t threads[5];
int numbers[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
pthread_create(&threads[i], NULL, thread_function, &numbers[i]);
}
for (int i = 0; i < 5; i++) {
pthread_join(threads[i], NULL);
}
return 0;
}
```

此示例创建5个线程,每个线程打印一个数字及其平方。主线程等待所有线程完成,然后退出。

2024-11-18


上一篇:C 语言函数教程

下一篇:C 语言键盘输入函数详解