小编Cin*_*nch的帖子

如何创建线程安全缓冲区/ POD?

我想我的问题很常见,但它让我发疯:

我有一个包含5个线程的多线程应用程序.其中4个线程完成它们的工作,如网络通信和本地文件系统访问,然后将它们的输出写入此表单的数据结构:

struct Buffer {
  std::vector<std::string> lines;
  bool has_been_modified;
}
Run Code Online (Sandbox Code Playgroud)

第5个线程将​​这些缓冲区/结构打印到屏幕:

Buffer buf1, buf2, buf3, buf4;

...

if ( buf1.has_been_modified || 
     buf2.has_been_modified || 
     buf3.has_been_modified || 
     buf4.has_been_modified )
{
  redraw_screen_from_buffers();
}
Run Code Online (Sandbox Code Playgroud)

如何保护缓冲区在被读取或写入时不被覆盖?

我找不到合适的解决方案,虽然我认为这必须是一个安静的常见问题.

谢谢.

c++ multithreading c++11

13
推荐指数
2
解决办法
2110
查看次数

如何找到C++标准库的实现?

我很想知道某些C++特性是如何工作的.我正在尝试学习诸如std :: function之类的C++ 11概念,但是我一直在碰到像INVOKE(函数,参数,返回)这样的墙,我不明白.人们告诉我,"哦,只是忽略它并使用auto"但我希望对C++及其标准库的工作方式有一个真正深刻的理解,所以我想找到标准库的源代码.

我猜想C++标准库与C标准库有点相关,而且对于像std :: iostream这样的东西,最低级别的凌乱的汇编/二进制实现,但是我对更高层次的抽象感兴趣,比如smart指针和std :: function.鉴于许多C++ 11库曾经是Boost库,我怎样才能找到C++标准库实现的源代码?

c++ standard-library c++11

4
推荐指数
1
解决办法
6267
查看次数

标签 统计

c++ ×2

c++11 ×2

multithreading ×1

standard-library ×1