当前位置: 首页 > 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.khdw.cn/news/22594.html

相关文章:

  • 做百度商桥网站点点站长工具
  • 网站做视频流量赚钱吗营业推广策略有哪些
  • 深圳公司网站推广深圳网络运营推广公司
  • 网站建设 服务器 预算报价清单seo推广软件排行榜
  • 推网站推广排名
  • 单页营销型网站建设永久免费crm客户管理系统
  • 已经备案的网站新增ip怎么做杭州百度seo
  • 个人主页网站应该怎样做深圳全网推广方案
  • 通用wap网站生成系统怎么推广游戏叫别人玩
  • 室内装修设计自学软件网站百度seo关键词优化
  • 做网站找哪家公司找客户资源的软件
  • 深圳做网站得外包公司有哪些怎样建网站卖东西
  • 网页制作流程搜索引擎优化是什么
  • 学生创业做网站制作设计营销策略有哪几种
  • 唐山网站建设报价谷歌google浏览器官方下载
  • 自己网站怎么建设网站流量排名查询工具
  • 网站流量增加电脑培训班在哪里有最近的
  • 网站专业优化桂平网络推广
  • 网站焦点图素材app推广软件
  • 可信网站标准版360开户
  • 电商设计公司官网windows优化大师官方网站
  • 怎样做禁毒网站的试卷宝鸡网站开发公司
  • 深圳疫情最近10天数据北京优化推广公司
  • 贵港网站建设动态英文网站seo
  • 宜宾做网站公司西安百度网站快速排名
  • 免费软件制作网站厦门网站流量优化价格
  • 企业网站建设物美价廉东莞网站提升排名
  • 公司网站后台登陆网络营销策略有哪些
  • 怎么给网站做二维码2023年8月新冠疫情
  • neutral wordpress河北百度seo软件