admin 管理员组

文章数量: 1087139


2024年3月20日发(作者:linux修改权限chown)

sem_wait 代码

sem_wait()

是一个 POSIX 线程(pthreads)库中的函数,用于对信号量进行操

作。它通常用于同步线程,以防止多个线程同时访问共享资源。

下面是一个简单的

sem_wait()

示例代码:

c

#include

#include

#include

sem_t semaphore;

void* threadFunction(void* arg) {

sem_wait(&semaphore); // 等待信号量可用

printf("Thread %ld has been granted the semaphore.n",

(long)arg);

sem_post(&semaphore); // 释放信号量

pthread_exit(NULL);

}

int main() {

sem_init(&semaphore, 0, 1); // 初始化信号量为1

pthread_t threads[5]; // 创建5个线程

int i;

for (i = 0; i < 5; i++) {

pthread_create(&threads[i], NULL, threadFunction, (void*)i); //

创建线程并传递参数i

}

for (i = 0; i < 5; i++) {

pthread_join(threads[i], NULL); // 等待所有线程完成

}

sem_destroy(&semaphore); // 销毁信号量

return 0;

}

这个程序创建了5个线程,每个线程都尝试获取信号量。

sem_wait()

会使线程等待,

直到信号量变为可用(大于0)。一旦线程获得信号量,它就会打印一条消息,然

后通过

sem_post()

释放信号量,允许其他线程获取信号量。


本文标签: 线程 信号量 创建