linux 线程中 信号量通信例子

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

sem_t bin_sem;
void *thread_function1(void *arg)
{
	 printf("thread_function1--------------sem_wait\n");
	 sem_wait(&bin_sem);
	 printf("sem_wait\n");
	 while (1)
	 {

	 }
}

void *thread_function2(void *arg)
{
	 printf("thread_function2--------------sem_post\n");
	 sem_post(&bin_sem);
	 printf("sem_post\n");
	 while (1)
	 {

	 }
}


 
int main()
{
 	int res;
	 pthread_t a_thread;
	 void *thread_result;

	 printf("main()++\n");
	 
	 res = sem_init(&bin_sem, 0, 0);
	 if (res != 0)
	 {
	  	perror("Semaphore initialization failed");
	 }
	 printf("sem_init\n");
	 res = pthread_create(&a_thread, NULL, thread_function1, NULL);
	 if (res != 0)
	 {
	  	perror("Thread creation failure");
	 }
	 printf("thread_function1\n");
	 sleep (5);
	 printf("sleep\n");
	 res = pthread_create(&a_thread, NULL, thread_function2, NULL);
	 if (res != 0)
	 {
	  	perror("Thread creation failure");
	 }
	 while (1)
	 {
	 }
}

  1. //tested by DriverMonkey  
  2. //phone:13410905075  
  3. //mail:bookworepeng@Hotmail.com
  4. //qq:196568501 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值