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

国外自助建站手机免费制作网站模板免费下载

国外自助建站,手机免费制作网站模板免费下载,做的高大上的网站,电商运营包括哪些方面#x1f57a;作者#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 #x1f618;欢迎关注#xff1a;#x1f44d;点赞#x1f64c;收藏✍️留言 #x1f3c7;码字不易#xff0c;你的#x1f44d;点赞#x1f64c;收藏❤️关注对我真的… 作者 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 欢迎关注点赞收藏✍️留言 码字不易你的点赞收藏❤️关注对我真的很重要有问题可在评论区提出感谢阅读 文章目录 前言1 POSIX信号量相关概念2 POSIX信号量相关函数3 基于环形队列的生产消费模型 前言 在多线程编程领域理解 POSIX 信号量的概念和相关函数是至关重要的。POSIX 信号量作为一种重要的同步原语可以帮助我们在多线程环境中实现线程之间的协调与同步从而确保数据的一致性和避免竞争条件的发生。 本篇博客旨在深入探讨 POSIX 信号量的基本概念和相关函数帮助读者全面理解这一关键的并发编程工具。通过本文的学习读者将能够掌握如何灵活地运用 POSIX 信号量来构建并发程序提高程序的性能和可靠性。让我们一起深入探索 POSIX 信号量的奥秘为多线程编程的世界增添新的智慧与力量。 1 POSIX信号量相关概念 POSIX信号量是什么 信号量的本质是一个计数器是用来描述临界资源有效的计数器 POSIX信号量和SystemV信号量作用相同都是用于同步操作达到无冲突的访问共享资源目的。 但POSIX可以用于线程间同步。 当多个线程想要获取信号量的时候都会对信号量当中的资源计数器进行减一操作。 如果初始化信号量的资源计数器的值为1表示当前只有一个资源这就意味着只有一个线程在同一时刻可以获取到信号量。 如果想要实现线程同步初始化信号量的资源计数器的值就不必为1了它可以根据需要设置 如果大于0则表示还有多少资源可以使用等于0则表示没有资源可以使用小于0则表示有多少线程在等待资源。 2 POSIX信号量相关函数 信号量初始化 #include semaphore.h int sem_init(sem_t *sem, int pshared, unsigned int value); 参数sem_t: 信号量的类型sem: 传入待要初始化的信号量pshared: 0 表示线程间共享非0表示进程间共享value信号量初始值信号量销毁 int sem_destroy(sem_t *sem); 参数sem:待销毁的信号量信号量等待 功能等待信号量会将信号量的值减1int sem_wait(sem_t *sem); //P()信号量发布 功能发布信号量表示资源使用完毕可以归还资源了。将信号量值加1。int sem_post(sem_t *sem);//V()3 基于环形队列的生产消费模型 上一个生产者-消费者的例子是基于queue的,其空间可以动态分配,现在基于固定大小的环形队列重写这个程序POSIX信号量。 环形结构起始状态和结束状态都是一样的不好判断为空或者为满所以可以通过加计数器或者标记位来判断满或者空。另外也可以预留一个空的位置作为满的状态 但是我们现在有信号量这个计数器就很简单的进行多线程间的同步过程 实现代码如下 RingQueue.cc #pragma#includeiostream #includeunistd.h #includevector #includesemaphore.h #includestdlib.h#define NUM 10class RingQueue { private:std::vectorint v;int _cap;//容量sem_t sem_product;//生产者sem_t sem_consume;//消费者int p_index;//生产者索引int c_index;//消费者索引public:RingQueue(int capNUM):_cap(cap),v(cap){sem_init(sem_product,0,cap);sem_init(sem_consume,0,0);p_index 0;c_index 0;}~RingQueue(){sem_destroy(sem_product);sem_destroy(sem_consume);}void put(const intin){sem_wait(sem_product);v[p_index] in;p_index;p_index p_index%NUM;sem_post(sem_consume);}void get(int out){sem_wait(sem_consume);out v[c_index];c_index;c_index c_index%NUM;sem_post(sem_product);} };main.cc #includeRingQueue.cc using namespace std;void* Consumer(void* arg){RingQueue *bq (RingQueue*)arg;int data;while(1){bq-get(data);coutI am pthread_self() is consumer : dataendl;} }void* Product(void* arg){RingQueue* bq (RingQueue*)arg;srand((unsigned int)time(NULL));while(1){int data rand()%100;bq-put(data);coutI am pthread_self() is product dataendl;sleep(1);} }int main() {RingQueue* pq new RingQueue();pthread_t c;pthread_t p;pthread_create(c,NULL,Consumer,(void*)pq);pthread_create(p,NULL,Product,(void*)pq);pthread_join(c,NULL);pthread_join(p,NULL);return 0; }makefile main:main.ccg -o $ $^ -lpthread .PHONY: clean:rm -f main结果 可以观察到生产一个消费一个
http://www.w-s-a.com/news/130908/

相关文章:

  • 邯郸网站设计 贝壳下拉服务器绑定网站打不开
  • 重庆网站建设帝玖科技手机网站建设价钱是多少
  • 广西建设厅网站行业网学新媒体运营要多少钱
  • 石家庄个人建站网站策划门户网什么意思
  • 沈阳市浑南区城乡建设局网站wordpress 批量打印
  • 网站建设都需学哪些天津网站建设交易
  • 公司网站空间家装室内设计
  • 一个考试网站怎么做品牌建设10阶梯
  • 网站建设网站设计广东双语网站建设多少钱
  • 临时手机号注册网站建筑效果图
  • wordpress网站是什么类似wordpress博客
  • 国际网站空间昆明做网站开发维护的公司
  • 建网站选号域名网站优化大赛
  • 师范街网站建设广告制作公司口号
  • 电子商务网站开发设计报告为什么wordpress主题中字体不统一
  • 百度站长快速收录网站建设完工确认书
  • 企业网站备案代理商建设工程施工合同2013
  • 要学做网站wordpress xss漏洞
  • 白云品牌型网站建设在网上做国际快递淘宝网站
  • 无锡网站建设方式推广软件赚钱的app
  • 如何控制一个网站软件开发wordpress教育插件
  • 网站开发属于软件开发类吗wordpress邮件失败
  • 凡科网站怎么设计win8网站模板
  • 深圳整站seo个人网站建设一般流程
  • 济南网站中企动力wordpress主题ripro
  • 淮北网站建设求职简历怎么做点击图片进网站
  • 自适应网站推广注册公司流程和费用公司注册
  • 电子商务网站建设预算表网站建设卩金手指科杰
  • 广西响应式网站哪家好产品网络推广怎样做
  • 移动网可以上的网站是什么样子的淘宝优惠券网站开发