当我阅读seastar源代码时,我注意到有一个称为tx_side
只有一个成员的联合结构。这是解决某些问题的技巧吗?
仅供参考,我将tx_side
以下结构粘贴:
union tx_side {
tx_side() {}
~tx_side() {}
void init() { new (&a) aa; }
struct aa {
std::deque<work_item*> pending_fifo;
} a;
} _tx;
1
可能是stackoverflow.com/questions/26572432/…的副本。
—
Max Langhof
@MaxLanghof这个问题和相应的答案没有提到使用这种联合结构的目的。
—
daoliker
您有使用此成员的示例吗?
—
n314159
这就是为什么我实际上没有使用我的有约束力的关闭投票的原因。但是我不确定您对问题的答案到底期望什么,而不是直接从那里得到的答案。假定使用
—
Max Langhof
union
代替的目的struct
是两者之间的一个或多个差异。这是一种非常晦涩的技术,因此除非该代码的原始作者出现,否则我不确定有人可以给您一个权威性的答案,他们希望以此解决这个问题(如果有)。
我最好的猜测是,union用于延迟构造(在这种情况下没有意义)或防止未决的_fifo破坏(导致内存泄漏)。但是没有用法的例子很难说。
—
康斯坦丁·史蒂普尼克'19