我开发了一个记录器,用于在 c++、Win32 控制台、visual studio(Windows) 中测试我们的模块 记录器在一个线程中运行。 当它在控制台窗口中显示输出时,线程正在被抢占。 其他一些模块线程正在运行。 因此,其他模块的输出与控制台窗口中 Logger 模块的输出混合在一起。
有什么方法可以避免记录器线程被抢占,从而使整个记录器输出可以在控制台输出窗口中的一个位置?
写入文件而不是输出窗口是一种解决方案。但由于不同机器上的驱动器名称可能不同,因此很难对记录器输出文件路径进行硬编码。即使那样,我们仍然可以编写代码来查找任何机器上可用的驱动器并写入第一个驱动器等。但是测试人员可能不知道在哪里搜索记录器输出文件。
最佳答案
将线程 Id 添加到记录器输出,然后使用可以过滤的日志查看器。
DebugView (在 windows 下)允许您将高亮过滤器添加到动态日志记录。
关于c++ - 如何在C++、Visual Studio(Windows)中避免线程抢占,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3510573/