• 线程相关函数(7)-sem_post(), sem_wait() 信号量


    sem_t
    sem_init
    sem_wait
    sem_trywait
    sem_timedwait
    sem_post
    sem_destroy

    生产者消费者实例:

    #include <stdlib.h>
    #include <pthread.h>
    #include <stdio.h>
    #include <semaphore.h>
    #define NUM 5 int queue[NUM]; sem_t blank_number, product_number;
    void *producer(void *arg) {   int p = 0;   while (1) {     sem_wait(&blank_number);     queue[p] = rand() % 1000 + 1;     printf("Produce %d ", queue[p]);     sem_post(&product_number);     p = (p+1)%NUM;     sleep(rand()%5);   }
    }
    void *consumer(void *arg) {   int c = 0;   while (1) {     sem_wait(&product_number);     printf("Consume %d ", queue[c]);     queue[c] = 0;       sem_post(&blank_number);     c = (c+1)%NUM;     sleep(rand()%5);   } }
    int main(int argc, char *argv[]) {   pthread_t pid, cid;   sem_init(&blank_number, 0, NUM);   sem_init(&product_number, 0, 0);   pthread_create(&pid, NULL, producer, NULL);   pthread_create(&cid, NULL, consumer, NULL);   pthread_join(pid, NULL);   pthread_join(cid, NULL);   sem_destroy(&blank_number);   sem_destroy(&product_number);   return 0; }
  • 相关阅读:
    树的直径教学思路
    dfs序3树上差分
    DFS序与欧拉序的区别
    DFS序2
    树的重心教学思路
    loadrunner11并发注册码
    JPA 添加 converter
    银行信贷账户管理任务
    《如何启动黄金圈思维》笔记
    《野蛮进化》笔记
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/8268677.html
Copyright © 2020-2023  润新知