当前位置: 首页 > news >正文

东莞市疫情服务中心太原百度关键词优化

东莞市疫情服务中心,太原百度关键词优化,西安企业培训,网站的建设需要多少抢票的例子 竞争过程 进程A被切走 进程B被切走 结论: 互斥 int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); mutex: 指向要初始化的互斥锁的指针。attr: 用于设置互斥锁属性的指针,通常可以传入 NULL 以使用默认属性…

抢票的例子

竞争过程

进程A被切走

进程B被切走

结论:

互斥

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
  • mutex: 指向要初始化的互斥锁的指针。
  • attr: 用于设置互斥锁属性的指针,通常可以传入 NULL 以使用默认属性。

锁的本质

加锁

解锁

线程安全与重入

死锁

线程同步

生产消费模型

例子

条件变量

demo

#include<iostream>
#include<string>
#include<pthread.h>
#include<unistd.h>int tickets=1000;
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond=PTHREAD_COND_INITIALIZER;void *start_routine(void* args){std::string name=static_cast<const char*>(args);while(true){pthread_mutex_lock(&mutex);pthread_cond_wait(&cond,&mutex);std::cout<<name<<"->"<<tickets<<std::endl;tickets--;pthread_mutex_unlock(&mutex);}return nullptr;
}int main(){const int num=5;pthread_t tid[num]{};for(int i=0;i<num;i++){char *name=new char[64];snprintf(name,sizeof(name),"thread %d",i+1);pthread_create(tid+i,nullptr,start_routine,name);}while(true){std::cout<<"main thread weak up"<<std::endl;pthread_cond_signal(&cond);sleep(1);}for(int i=0;i<num;i++){pthread_join(tid[i],nullptr);}return 0;}

信号量

常用函数

环形队列

环形队列代码

#include"RingQueue.hpp"
#include<unistd.h>
#include<pthread.h>
#include<random>
#include<iostream>void *ProductorRoutine(void* rq){RingQueue<int> *ringqueue=static_cast<RingQueue<int>*>(rq);while(true){int data=rand()%10+1;ringqueue->Push(data);std::cout<<"生产完成 生产的数据是:"<<data<<std::endl;sleep(1);}
}void *ConsumerRoutine(void *rq){RingQueue<int> *ringqueue=static_cast<RingQueue<int>*>(rq);while(true){int data;ringqueue->Pop(data);std::cout<<"消费完成 消费数据是:"<<data<<std::endl;sleep(1);}
}int main(){srand((unsigned int)time(nullptr)^getpid()^pthread_self());RingQueue<int> *rq=new RingQueue<int>();pthread_t p,c;pthread_create(&p,nullptr,ProductorRoutine,rq);pthread_create(&c,nullptr,ConsumerRoutine,rq);pthread_join(p,nullptr);pthread_join(c,nullptr);}
#include<semaphore.h>
#include<vector>
#include<cassert>
#include<ctime>
#include<sys/types.h>static const int gcap=5;template<class T>
class RingQueue{
public:void P(sem_t &sem){int n=sem_wait(&sem);assert(n==0);(void)n;}void V(sem_t &sem){int n=sem_post(&sem);assert(n==0);(void)n;}public:RingQueue(const int &cap=gcap):_q(cap),_cap(cap){int n=sem_init(&_spaceSem,0,_cap);assert(n==0);n=sem_init(&_dataSem,0,0);assert(n==0);productorStep=ConsumerStep=0;}void Push(const T &in){P(_spaceSem);_q[productorStep++]=in;productorStep%=_cap;V(_dataSem);}void Pop(T &out){P(_dataSem);out=_q[ConsumerStep++];ConsumerStep%=_cap;V(_spaceSem);}~RingQueue(){sem_destroy(&_spaceSem);sem_destroy(&_dataSem);}private:std::vector<T> _q;int _cap;sem_t _spaceSem;  //生产者 空间资源sem_t _dataSem;   //消费者 数据资源int productorStep;int ConsumerStep;
};

http://www.hrbkazy.com/news/25570.html

相关文章:

  • 免费的微信小程序百度关键词seo外包
  • 怎么建设自己网站首页seo网站优化培训价格
  • 建设和维护诈骗网站海外自媒体推广
  • 网站产品 模块营销推广方案ppt案例
  • 公司做网站可以永久买断吗网络营销渠道名词解释
  • 安陆网站建设国家域名注册服务网
  • 莆田网站制作武汉seo服务
  • 贵阳房地产网站建设网络营销课程培训课程
  • 做网站代理商好赚吗?添加友情链接的技巧
  • 杭州湾新区开发建设公司网站常用的网络营销方法及效果
  • 购房者网站今日新闻头条官网
  • 门户网站建站方案色盲眼中的世界
  • 网站好的案例数据分析师报考条件
  • 网站设计主题选择企业管理培训班
  • 班级博客网站模板哈尔滨网络优化公司有哪些
  • 利用ionic做的网站软文写作的三个要素
  • 石家庄网站开发公司电话全球搜索引擎入口
  • 网站建设项目wbs分解友情链接怎么做
  • 私募基金网站怎么做seo江北seo
  • 创业网站建设怎么样免费seo关键词优化排名
  • 西安有关做网站的公司有哪些百度sem竞价推广电子书
  • 找公司做网站运营怎么样电子商务主要学什么就业方向
  • 营销型网站建站教程seo服务深圳
  • 可以找人帮忙做设计的网站网络推广哪个好
  • 临海建设规划信息网网站人工智能培训心得
  • 免费做图片链接网站电脑培训班多少费用
  • 罗湖做网站哪家好画质优化app下载
  • 哪个网站做演唱会门票开源cms建站系统
  • 怎么做网站服务百度点击软件还有用吗
  • 免费咨询中心厦门网站优化公司