文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux 系统线程编程

Linux 系统线程编程

时间:2010-10-31  来源:lin_13824307069

 也许大家头听过,生产者-消费者 模型吧, 就是利用线程同步的方法来实现的,本博文使用线程锁的方式来实现线程同步:

 

头文件:

**************************************************

*  # include <stdio.h>           *
*  # include <pthread.h>         *
*  # include <time.h>            *
*  # include <unistd.h>          *

**************************************************

函数声明:

=================================================

void reader_function(void);
void writer_function(void);
void consumer_item(int nu);
int make_new_item(void);

===========================================

 

int buffer;

int num;

int buffer_has_item = 0;

pthread_mutex_t mutex;

int main(void)
{
  pthread_t reader;

  pthread_mutex_init(&mutex,NULL);
  pthread_create(&reader,NULL, (void *)reader_function, NULL);
  writer_function();

  return 0;
}

void reader_function(void)
{
  while(1)
    {
     pthread_mutex_lock(&mutex);
     if(buffer_has_item == 1)
      {
        consumer_item(buffer);
        buffer_has_item = 0;
      }
     pthread_mutex_unlock(&mutex);
     sleep(1);
    }
}

void writer_function(void)
{
   while(1)
  {
     pthread_mutex_lock(&mutex);
     if(buffer_has_item == 0)
      {
        buffer = make_new_item();
        printf(" New Item has makerd = %d\n",buffer);
        buffer_has_item = 1;
      }
       pthread_mutex_unlock(&mutex);
       sleep(1);
  }

int make_new_item(void)
{
  num = rand()%100;
  return num;
}

void consumer_item(int tmp_buffer)
{
   int con_num;
   con_num = tmp_buffer + 1000;
   printf(" Consumer num =  %d\n",con_num);
}

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载