c++ - 如何在C++、Visual Studio(Windows)中避免线程抢占

标签 c++ multithreading

我开发了一个记录器,用于在 c++、Win32 控制台、visual studio(Windows) 中测试我们的模块 记录器在一个线程中运行。 当它在控制台窗口中显示输出时,线程正在被抢占。 其他一些模块线程正在运行。 因此,其他模块的输出与控制台窗口中 Logger 模块的输出混合在一起。

有什么方法可以避免记录器线程被抢占,从而使整个记录器输出可以在控制台输出窗口中的一个位置?

写入文件而不是输出窗口是一种解决方案。但由于不同机器上的驱动器名称可能不同,因此很难对记录器输出文件路径进行硬编码。即使那样,我们仍然可以编写代码来查找任何机器上可用的驱动器并写入第一个驱动器等。但是测试人员可能不知道在哪里搜索记录器输出文件。

最佳答案

将线程 Id 添加到记录器输出,然后使用可以过滤的日志查看器。

DebugView (在 windows 下)允许您将高亮过滤器添加到动态日志记录。

关于c++ - 如何在C++、Visual Studio(Windows)中避免线程抢占,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3510573/

相关文章:

c++ - 程序因为链表创建推送功能而崩溃

c++ - MinGW-w64 OpenGL 链接器错误

Java程序无限循环,没有任何错误信息

multithreading - 如何在不同处理器之间分配负载

c++ - 如果信号线程被阻塞,为什么信号没有在接收线程中处理?

c++ - 保留标识符在编译的哪个阶段被保留?

c++ - Lamba 类型不是由模板函数或 auto 关键字推导出来的

c++ - 我可以根据 C++ 中的输入通过相同的方法返回不同的对象吗?

multithreading - 多线程应用程序中的 DLL 和类

multithreading - .Net 为什么 Threading.Task.Task 仍然阻塞我的 UI?