我想在流中进行异步写入
在下面的代码中,函数streaming
和push_stream
通过使用CreateThread
winapi函数在并行线程中运行。 std::lock_guard<std::mutex>
应锁定queue
随机访问权限。
但是这个代码实例存在一些问题。当queue
弹出项目时,我会收到Microsoft Visual C++ Runtime Library
错误__acrt_first_block == header
std::ofstream somestream;
std::queue<std::string> queue;
std::mutex mutexQueue;
void streaming() {
while (true) {
if (!queue.empty()) {
std::lock_guard<std::mutex> lock(mutexQueue);
while (!queue.empty()) {
somestream << queue.front();
queue.pop();
}
}
}
}
void push_stream(std::string str) {
std::lock_guard<std::mutex> lock(mutexQueue);
queue.push(str);
}
如何进行这种异步写入?我已经尝试了concurrent_queue
,但它没有删除线程安全的项目。
问题出在.dll
和.exe
静态链接到RT。从.exe
调用的push_stream
,.dll
中实现的功能。
导致Debug Assertion Failed! Expression: _pFirstBlock == pHead
现在问题已修复。