我想我的问题很常见,但它让我发疯:
我有一个包含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++特性是如何工作的.我正在尝试学习诸如std :: function之类的C++ 11概念,但是我一直在碰到像INVOKE(函数,参数,返回)这样的墙,我不明白.人们告诉我,"哦,只是忽略它并使用auto"但我希望对C++及其标准库的工作方式有一个真正深刻的理解,所以我想找到标准库的源代码.
我猜想C++标准库与C标准库有点相关,而且对于像std :: iostream这样的东西,最低级别的凌乱的汇编/二进制实现,但是我对更高层次的抽象感兴趣,比如smart指针和std :: function.鉴于许多C++ 11库曾经是Boost库,我怎样才能找到C++标准库实现的源代码?