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

discuz 手机网站模板html5做网站链接范例

discuz 手机网站模板,html5做网站链接范例,广东个人 网站备案,设计素材网站图片一、说明 在一篇分析了多线程的安全退出的相关机制和方式#xff0c;那么本篇就针对前一篇的相关的分析进行举例分析。因为有些方法实现的方法类似#xff0c;可能就不一一重复列举了#xff0c;相关的例程主要以在Linux上的运行为主。 二、实例 线程间的同步#xff0c…一、说明 在一篇分析了多线程的安全退出的相关机制和方式那么本篇就针对前一篇的相关的分析进行举例分析。因为有些方法实现的方法类似可能就不一一重复列举了相关的例程主要以在Linux上的运行为主。 二、实例 线程间的同步其实理解清楚动作的原理并不麻烦麻烦的在于如何和业务较好的契和起来。直白的说就是用得恰到好处。所以下面的分析的方法只是告诉大家这是一类手段如何能更好的运用才看开发者具体的要求是什么。 1、等待方式 #include atomic #include condition_variable #include iostream #include mutex #include signal.h #include thread #include unistd.hstd::atomic_bool quit false;struct Data {int Display(int c) {std::cout Display value: c std::endl;return c;} };void threadWorkSleep(Data *d) {//模拟工作for (int c 0; c 10000; c) {std::cout threadWorkSleep:call Data func: d-Display(c) std::endl;} }int main() {Data *pd new Data;std::thread t std::thread(threadWorkSleep, pd);t.detach();// firt:sleep thread safe quitsleep(1);return 0; }大家可以试着调整一下等待和模拟工作的时间就可以发现具体的关系。实际的场景下可能要求必须完成线程的工作才能退出。而如果等待时长不够则线程就来不及完成相关的工作就退出了那么就没有实现业务的要求。等待的方式很粗暴但也很简单。 2、轮询方式 #include atomic #include condition_variable #include iostream #include mutex #include signal.h #include thread #include unistd.hstd::atomic_bool quit false;struct Data {int Display(int c) {std::cout Display value: c std::endl;return c;} };void threadWorkPolling(Data *d) {for (int c 0; c 10000; c) {std::cout threadWorkPolling:call Data func: d-Display(c) std::endl;}quit true; }int main() {Data *pd new Data;// sec:Pollingstd::thread tp std::thread(threadWorkPolling, pd);while (!quit) {std::cout polling quit: quit std::endl;}std::cout polling thread safe quit.quit is: quit std::endl;std::cout master thread thread! std::endl;// or deatchif (tp.joinable()) {tp.join();}return 0; }轮询的方式其实就是不断反复的查看是否可以退出了这样做虽然安全但浪费时间。就和现实社会一样本来一个人干得活还得安排一个人去没事转转。 3、消息方式 #include atomic #include condition_variable #include iostream #include mutex #include signal.h #include thread #include unistd.hstd::atomic_bool quit false;struct Data {int Display(int c) {std::cout Display value: c std::endl;return c;} };// third:msg or signal static void sigHandler(int sigNo) {std::cout recv msg no is: sigNo std::endl;if (sigNo SIGUSR1) {quit true;std::cout recv SIGUSR1 std::endl;} } // third:msg or signal void threadWorkMsg(Data *d) {for (int c 0; c 10000; c) {std::cout threadWorkMsg:call Data func: d-Display(c) std::endl;}int ret raise(SIGUSR1);if (ret 0) {std::cout SIGUSR1 msg send err! std::endl;} }int main() {Data *pd new Data;// msgsignal(SIGUSR1, sigHandler);std::thread ts std::thread(threadWorkMsg, pd);ts.detach();while (!quit) {std::cout msg or signal quit: quit std::endl;}std::cout polling thread safe quit.quit is: quit std::endl;return 0; }这个信号的例程因为和其它程序共用的原因把信号放到了主程序这样看起来也有点轮询的意思其实如果把事件接收放到线程中反而更好体现这种情况。有兴趣可以试试。 4、事件方式 #include atomic #include condition_variable #include iostream #include mutex #include signal.h #include thread #include unistd.hstd::atomic_bool quit false;struct Data {int Display(int c) {std::cout Display value: c std::endl;return c;} };// fourth:event std::condition_variable conv; std::mutex mt; bool signaled false; void threadWorkEvent(Data *d) {for (int c 0; c 100; c) {std::cout threadWorkEvent:call Data func: d-Display(c) std::endl;}signaled true;std::cout threadWorkEvent,set notify_one! std::endl;conv.notify_one(); }int main() {Data *pd new Data;// eventstd::thread te std::thread(threadWorkEvent, pd);te.detach();std::unique_lockstd::mutex lock(mt);while (!signaled) {std::cout thread start wait....! std::endl;conv.wait(lock);}std::cout thread recv notify_one and quit wait! std::endl;std::cout master thread thread! std::endl;return 0; }其实这几个例程都非常简单但可以一眼看明白几种手段的应用。可能老鸟儿们觉得没什么但对于新手来说可能还是非常有用的。其实真正复杂的在于线程结束时相关的资源包括涉及到内存和IO等的处理。一个不小心这就出现各种问题。不过有了各个线程间互相协调的手段就知道如何下手了。 三、总结 老生常谈的技术可能对于不少开发者已经耳朵都听出茧子来了。可还是要说为什么这就和上学一样你觉得你会了而且你也明白了整个过程甚至把作业都作得很好可考试呢大多数人仍然是一个中上游的水平。要是明白这个现象产生的道理就明白现在这里说的什么道理。 熟能生巧但很难产生思想大家自己意会
http://www.hkea.cn/news/14477966/

相关文章:

  • js判断是手机还是电脑访问网站帮做论文网站吗
  • 网站建设朋友圈素材自己做卖东西的网站
  • 徐州网站建设薇at57666y邯郸做网站推广费用
  • 做直播网站需要哪些技术网线制作的标准
  • 做网站ps能用美图秀秀么网站建设与管理用什么软件
  • 邢台手机网站建设惠州外贸网站建设
  • 体育局网站建设秦皇岛房管局备案查询网
  • 贸易网站建设什么行业最需要网站建设
  • 网站关键词布局图很有质感的网站
  • 安阳住房与城乡建设局官方网站wordpress手机底部导航栏设置
  • 移动微网站建设邢台信息港123招聘
  • 上海网站建设公司官网网站权重多少比较好
  • 北京微信网站开发wordpress注册链接
  • 甘肃自助建站系统怎么用用手机搭建wordpress
  • 广州旅游网站建设字体设计在线生成免费
  • wordpress 本地建站教程wordpress绑定wap域名
  • 电子商务网站建设与管理的背景电商平台运营是做什么的
  • 世界网站制作wordpress网站页脚
  • 网络公司网站设计多少钱最新新闻热点国家大事
  • json做网站的数据库免费seo在线工具
  • 网站怎样做301跳转网站开发培训班 上地
  • 腾讯云做网站步骤深圳网站建设怎么办
  • 国外外贸网站有哪些问题电商模板网站
  • 网站开发需求分析实例北京网站优化wyhseo
  • 建平台网站费用内蒙古建设厅网站
  • 销售类网站开发域名到期了网站会打不开吗
  • 网站开发问题论文学校网站建设与维护
  • 沈阳网站建设优化企业西安百度关键词包年
  • 网站域名查询工具怎么制作网站程序
  • 青岛易龙网站建设深圳最近流感多吗