เมื่อฉันอ่านซอร์สโค้ด seastarฉันสังเกตเห็นว่ามีโครงสร้างแบบสหภาพที่เรียกว่าtx_side
มีสมาชิกเพียงคนเดียว แฮ็คนี้จะจัดการกับปัญหาบางอย่างหรือไม่?
FYI ฉันวาง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
เป็นหนึ่งในความแตกต่างระหว่างสองอย่างนี้ มันเป็นเทคนิคที่ค่อนข้างคลุมเครือดังนั้นหากผู้เขียนต้นฉบับของรหัสนั้นมาพร้อมฉันไม่แน่ใจว่าใครบางคนสามารถให้คำตอบที่มีสิทธิ์ซึ่งปัญหาที่พวกเขาหวังว่าจะแก้ไขด้วย (ถ้ามี)
ฉันเดาได้ดีที่สุดว่าการรวมกันนั้นใช้เพื่อชะลอการสร้าง (ซึ่งค่อนข้างไม่มีจุดหมายในกรณีนี้) หรือป้องกันการทำลาย (ซึ่งนำไปสู่การรั่วไหลของหน่วยความจำ) ของ pending_fifo แต่ยากที่จะพูดโดยไม่มีตัวอย่างการใช้งาน
—
Konstantin Stupnik