zoukankan      html  css  js  c++  java
  • 生产者和消费者

    #include <iostream>
    #include <queue>
    #include <pthread.h>
    
    using namespace std;
    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
    
    queue<int> q;
    
    void* comsumer(void* arg){
        for(;;){
            pthread_mutex_lock(&mutex);
            while(q.empty()){
                pthread_cond_wait(&cond,&mutex);
            }
            while(!q.empty()){
                cout<<"comsume:"<< q.front() <<endl;
                q.pop();
            }
            pthread_mutex_unlock(&mutex);
        }
        return NULL;
    }
    void* producer(void* arg){
        int number = *(int*)arg;
        for(int i = 0; i < number; i++){
            pthread_mutex_lock(&mutex);
            q.push(i);
            pthread_cond_signal(&cond);
            pthread_mutex_unlock(&mutex);
        }
        return NULL;
    }
    
    
    int main(){
        pthread_t comsumer_thread;
        pthread_t producer_thread;
        pthread_create(&comsumer_thread,NULL,comsumer,NULL);
        int num = 1000;
        pthread_create(&producer_thread,NULL,producer, &num);
        pthread_join(comsumer_thread, NULL);
        pthread_join(producer_thread, NULL);
        return 0;
    }
    
  • 相关阅读:
    ceph概述
    docker网络
    ceph部署
    K8s集群搭建(二)
    K8s架构
    K8s集群搭建(一)
    Kubernetes介绍
    虚拟化网络管理(二)
    virt-manager创建虚拟机
    C#中TransactionScope的使用方法和原理
  • 原文地址:https://www.cnblogs.com/shaolw/p/5568442.html
Copyright © 2011-2022 走看看