Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2314
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2015-09-17 18:26
文章分类

全部博文(1)

文章存档

2016年(1)

我的朋友
最近访客

分类: LINUX

2016-05-26 13:32:07

1. 多线程
线程id类型:pthread_t
多线程相关函数:
pthread_create
pthread_exit

2. 信号量
信号量类型:sem_t
相关函数名:
sem_init
sem_wait
sem_post

例程
/*
*    Includes
*/

/*
*    Contants
*/
sem_t s1;  // 信号量1
sem_t s2;  // 信号量2

/* 线程routine */
void *routine(void *arg)
{
    char *buf = (char *)arg;

    while(1)
    {
        sem_wait(&s1);
        if(strlen(buf) == 0)
            break;

        printf("%d bytes\n", strlen(buf));
        sem_post(&s2);
    }

    pthread_exit(NULL);
}

int main(int argc, char **argv)
{
    char buf[20];

    sem_init(&s1, 0, 0);
    sem_init(&s2, 0, 1);

    pthread_t tid;
    pthread_create(&tid, NULL, routine, (void *)buf);

    while(1)
    {
        sem_wait(&s2);

        bzero(buf, 20);
        if(fgets(buf, 20, stdin) == NULL)
            break;

        sem_post(&s1);
    }

    sem_post(&s1);
    pthread_exit(NULL);
}
阅读(123) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~