seastarのソースコードを読んでいたときに、tx_side
メンバーが1つだけのと呼ばれる共用体構造があることに気付きました。これは特定の問題に対処するためのハックですか?
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
、2つの違いの1つまたは複数です。これはかなりあいまいな手法なので、そのコードの元の作者が一緒に来ない限り、誰かがこれで解決したいと考えている問題(ある場合)を信頼できる答えを誰かがあなたに与えることができるかどうかはわかりません。
私の推測では、unionを使用して、建設を遅らせる(この場合は意味がありません)か、pending_fifoの破壊を防ぐ(メモリリークにつながる)のを防ぎます。しかし、使用例なしで言うのは難しいです。
—
Konstantin Stupnik