您的位置:首页 > 运维架构 > Linux

how to implement the WaitForMultipleObjects in linux

2012-11-18 20:19 811 查看
原文地址: http://www.linuxquestions.org/questions/programming-9/how-to-implement-waitformultipleobjects-in-linux-908553/

#include <stdlib.h>
#include <stdio.h>
#include <semaphore.h>
#include <pthread.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>

#define NUM_THREADS (2)

sem_t semaphore;

void *worker_thread(void *arg)
{
int i;
for (i=0; i<10; ++i) {
fprintf(stderr,".");
sleep(1);
}
sem_post(&semaphore);
return NULL;
}

int main(int argc, char* argv[])
{
pthread_t thread[NUM_THREADS];
int i;
sem_init(&semaphore, 0, -1 * NUM_THREADS);

for (i =0; i< NUM_THREADS; ++i) {
pthread_create(&thread[i],NULL, &worker_thread, NULL);
}

if (sem_wait(&semaphore) < 0) {
printf("sem_wait failed: %s\n", strerror(errno));
return EXIT_FAILURE;
}
for (i =0; i< NUM_THREADS; ++i) {
pthread_join(thread[i], NULL);
}
printf("\nAll threads are done now\n");
return EXIT_SUCCESS;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: