前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++编程之美-代码清单1-17

C++编程之美-代码清单1-17

作者头像
cwl_java
发布2022-11-30 08:43:28
1530
发布2022-11-30 08:43:28
举报
文章被收录于专栏:cwl_Java

代码清单1-17

代码语言:javascript
复制
#define BUFFER_COUNT 100
Block g_buffer[BUFFER_COUNT];

Thread g_threadA(ProcA);
Thread g_threadB(ProcB);
Semaphore g_seFull(0, BUFFER_COUNT);
Semaphore g_seEmpty(BUFFER_COUNT, BUFFER_COUNT);
bool g_downloadComplete;
int in_index = 0;
int out_index = 0;

void main()
{
     g_downloadComplete = false;
     threadA.Start();
     threadB.Start();
     // wait here till threads finished
}
void ProcA()
{
     while(true)
     {
          g_seEmpty.Unsignal();
          g_downloadComplete = GetBlockFromNet(g_buffer + in_index);
          in_index = (in_index + 1) % BUFFER_COUNT;
          g_seFull.Signal();
          if(g_downloadComplete)
               break;
     }
}

void ProcB()
{
     while(true)
     {
          g_seFull.Unsignal();
          WriteBlockToDisk(g_buffer + out_index);
          out_index = (out_index + 1) % BUFFER_COUNT;
          g_seEmpty.Signal();
          if(g_downloadComplete && out_index == in_index)
               break;
     } 
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码清单1-17
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档