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

灵璧县建设局网站自己建网站要多少钱

灵璧县建设局网站,自己建网站要多少钱,网站程序开发技术,深圳挖矿app开发说明 本代码为jyy老师上课演示条件变量解决同步问题示例(本人只做记录与分享) 本人未使用老师封装的POSIX线程库, 直接在单文件中调试并注释 问题描述 有三类线程 T1 若干: 死循环打印< T2 若干: 死循环打印> T3 若干: 死循环打印_ 任务: 对线程同步&#xff0c;使得屏幕…

说明

本代码为jyy老师上课演示条件变量解决同步问题示例(本人只做记录与分享)
本人未使用老师封装的POSIX线程库, 直接在单文件中调试并注释

问题描述

有三类线程
T1 若干: 死循环打印<
T2 若干: 死循环打印>
T3 若干: 死循环打印_
任务:
对线程同步,使得屏幕打印出<><__><>的组合

状态机

在这里插入图片描述

代码

#include <pthread.h>
#include <iostream>
#include <assert.h>
#include <string>
#include <vector>#define Lock(x) pthread_mutex_lock(x) 
#define UnLock(x) pthread_mutex_unlock(x)// 状态机的状态, 从1开始编号
enum { A = 1, B, C, D, E, F, };
// 构建状态机的
struct rule {int from, ch, to;
};
std::vector<rule> rules = {// <><{A, '<', B},{B, '>', C},{C, '<', D},// ><>{A, '>', E},{E, '<', F},{F, '>', D},// D是打印出一条鱼后停留的状态, // 需要经过'_'到初始状态A, 重新打印鱼{D, '_', A},
};
// 当前状态
int current_state = A;pthread_mutex_t lk = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cv = PTHREAD_COND_INITIALIZER;/*** 检查当前状态是否又ch这条出边* 返回0表示无法根据ch转移到一个状态
*/
int next(char ch) {// 检查ch是否是当前状态的出边for (const auto& rule : rules) {if (rule.from == current_state && rule.ch == ch) {return rule.to;}}return 0;
}
/*** 检查同步条件是否满足
*/
static int can_print(char ch) {return next(ch) != 0;
}
// 创建12个线程, 每4个打印同种字符
std::string charlib = ".<<<<<>>>>___";void* fish_thread(void* arg) {int id = *((int *)arg);char role = charlib[id];while (true) {// 先上锁Lock(&lk);// 再检查条件变量while (!can_print(role)) {pthread_cond_wait(&cv, &lk);}putchar(role); // Not lock-protected// 更新到下一个状态current_state = next(role);assert(current_state);// 更新状态后可能会使得等待该条件的线程满足条件pthread_cond_broadcast(&cv);UnLock(&lk);}
}int main() {std::vector<pthread_t> threads(charlib.size());std::vector<int> pid(charlib.size());for (int i = 0; i < charlib.size(); i++) {pid[i] = i + 1;pthread_create(&threads[i], nullptr, &fish_thread, &pid[i]);}for (int i = 0; i < charlib.size(); i++) {pthread_join(threads[i], nullptr);}
}
http://www.yayakq.cn/news/228797/

相关文章:

  • 青岛网站建设公司 中小企业补贴怎么建设影视网站
  • 国内创意网站界面设计创建网站平台
  • 泊头市做网站网络营销发展方案策划书
  • 亚洲网站正在建设中百度地图手机网站开发
  • 心悦dnf免做卡网站荆州 网站建设
  • 什么是电子商务网站建设建设路84号 网站备案
  • 已有网站开发app客户端php 网站共享变量
  • 自学软件网站开发wordpress 移动端m
  • 教做宝宝辅食的网站网站分站是怎么做的
  • 老年大学网站开发优化员工
  • 烟台开发区网站建设seo产品推广
  • asp网站开发工程师网站备案流程及资料
  • iis网站目录权限wordpress 顶部幻灯片
  • 上海市建设安全协会成绩查询的网站wordpress 子父菜单
  • 营销型网站建设测验题定制网站开发方案ppt
  • 刚做的网站多久能被搜索到近期的新闻消息
  • 东营北京网站建设小说类网站功能建设
  • 营销型网站特征wordpress按钮拨电话
  • 网站建设的岗位职责网站开发服务费计入什么科目
  • 中山织树网站建设哈尔滨建设信息网官网
  • 成都网站建设专业乐云seo手把手教你网上开店
  • 益阳网站制作公司地址网站模板制作教程视频教程
  • dede静态网站模板下载网站需求分析报告范文
  • 公司网站有哪些重要性怎样做网站地图
  • 德国室内设计联盟不利于优化网站的因素
  • 建站全过程做网站代码保密协议
  • 北京天海网站建设公司seo公司品牌哪家好
  • 双语对照网站公司网站的seo优化
  • wordpress 网站加速是不是做网站就能赚钱
  • 静态网站开发项目实验报告cc在线代理