繁体   English   中英

c ++中的线程序列化是什么意思?

[英]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实际上意味着以串行形式发布,就像一个接一个地发布。 因此,线程序列化意味着确保某个事件集不是同时发生在序列中

因此,具有序列化线程访问权限的堆意味着对堆的调用将按其生成的顺序进行,并且实际上不会同时发生。 这可能是通过全局锁来完成的。

在不知道你告诉它的具体上下文的情况下,我猜它是指通过使用消息队列来模拟多线程系统的单线程应用程序的开发。

这让我回到过去玩CircleMUD派生的时光 整个游戏是在一个单独的线程实现,但它必须同时处理50-100球员。 我对他们如何实现这一点感到非常惊讶。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM