C语言写一个初始化线程互斥锁的代码,for循环初始化4此
时间: 2024-03-11 22:50:56 浏览: 87
好的,以下是一个简单的 C 代码示例,用于初始化一个互斥锁并进行4次循环初始化:
```c
#include <stdio.h>
#include <pthread.h>
#define NUM_THREADS 4
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 初始化互斥锁
void *thread_func(void *thread_id) {
int tid = *(int*)thread_id;
pthread_mutex_lock(&mutex); // 加锁
printf("线程%d获得了锁\n", tid);
pthread_mutex_unlock(&mutex); // 解锁
pthread_exit(NULL);
}
int main() {
pthread_t threads[NUM_THREADS];
int tids[NUM_THREADS];
int i;
for (i = 0; i < NUM_THREADS; i++) {
tids[i] = i;
pthread_create(&threads[i], NULL, thread_func, &tids[i]);
}
for (i = 0; i < NUM_THREADS; i++) {
pthread_join(threads[i], NULL);
}
pthread_mutex_destroy(&mutex); // 销毁互斥锁
return 0;
}
```
在上面的代码中,我们使用 `pthread_mutex_t` 类型来初始化互斥锁 `mutex`。然后,我们使用一个 `for` 循环创建4个线程,并在每个线程中通过 `pthread_mutex_lock()` 获得锁,输出线程ID和获得锁的信息,最后通过 `pthread_mutex_unlock()` 解锁。最后,我们通过 `pthread_join()` 等待线程结束,并通过 `pthread_mutex_destroy()` 销毁互斥锁。
这样,我们就成功地初始化了一个互斥锁,并使用它保护了线程的共享资源。
阅读全文