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 语言键盘输入函数详解
Java方法栈日志的艺术:从错误定位到性能优化的深度指南
https://www.shuihudhg.cn/133725.html
PHP 获取本机端口的全面指南:实践与技巧
https://www.shuihudhg.cn/133724.html
Python内置函数:从核心原理到高级应用,精通Python编程的基石
https://www.shuihudhg.cn/133723.html
Java Stream转数组:从基础到高级,掌握高性能数据转换的艺术
https://www.shuihudhg.cn/133722.html
深入解析:基于Java数组构建简易ATM机系统,从原理到代码实践
https://www.shuihudhg.cn/133721.html
热门文章
C 语言中实现正序输出
https://www.shuihudhg.cn/2788.html
c语言选择排序算法详解
https://www.shuihudhg.cn/45804.html
C 语言函数:定义与声明
https://www.shuihudhg.cn/5703.html
C语言中的开方函数:sqrt()
https://www.shuihudhg.cn/347.html
C 语言中字符串输出的全面指南
https://www.shuihudhg.cn/4366.html