[英]what does it mean by thread serialization in c++?
我知道序列化对象以及如何将它们保存到磁盘,但线程序列化实际上意味着什么? 有没有人可以帮我解决这个问题并指出我正确的方向?
你是对的,这是serialization
两个不同含义。 您熟悉数据序列化 ,即将数据结构转换为某些规范表示中的字节流。 在多线程中,术语序列化意味着线程或进程同步的 互斥 ,这意味着一次只有一个线程可以对数据结构进行操作。 C ++ 11使用std::mutex
提供线程之间的序列化
#include <mutex>
std::mutex file_io_mutex;
{
std::lock_guard<std::mutex> guard(file_io_mutex);
std::out << "Only one thread at a time will execute this line." << std::endl;
}
这是资源获取初始化(RAII)的示例,其中资源被同时获取和初始化,并且当它超出范围时被释放(执行达到紧密的大括号)。 这是一种常见的习惯用法,它确保即使代码在到达块结束之前抛出异常,也会释放互斥锁。
Serialize实际上意味着以串行形式发布,就像一个接一个地发布。 因此,线程序列化意味着确保某个事件集不是同时发生在序列中
因此,具有序列化线程访问权限的堆意味着对堆的调用将按其生成的顺序进行,并且实际上不会同时发生。 这可能是通过全局锁来完成的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.