Linux--线程同步
在Linux下,实现线程同步的常用方法有:
- 互斥锁(mutex)
- 读写锁(rwlock)
- 自旋锁(spinlock)
- 信号量(semaphore)
- 条件变量(condition variable)
以下是使用互斥锁实现线程同步的示例代码:
#include <pthread.h>
#include <stdio.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int shared = 0;
void* thread_function(void* arg) {
int i;
for (i = 0; i < 5; ++i) {
pthread_mutex_lock(&mutex);
shared++;
printf("Thread %lu: %d\n", pthread_self(), shared);
pthread_mutex_unlock(&mutex);
sleep(1);
}
return NULL;
}
int main() {
pthread_t thread;
pthread_create(&thread, NULL, &thread_function, NULL);
thread_function(NULL);
pthread_join(thread, NULL);
return 0;
}
在这个例子中,我们创建了一个简单的程序,其中有一个共享资源 shared
,在每个线程中通过互斥锁进行保护。每个线程在操作共享资源后打印出当前的值,并且通过 sleep(1)
暂停一秒钟,以便观察到同步的效果。
评论已关闭