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
그렇기 때문에 제 결속 투표를 실제로 사용하지 않았습니다. 그러나 나는 당신이 당신의 질문에 대한 대답에서 정확히 무엇을 기대하는지 잘 모르겠습니다. 아마도
—
맥스 랭 호프
union
대신 에 사용하는 목적은 struct
둘 사이의 차이점 중 하나 이상입니다. 그것은 매우 모호한 기술이므로 해당 코드의 원래 작성자가 나오지 않으면 누군가이 문제를 해결하기를 원하는 권위있는 답변을 줄 수 있는지 확실하지 않습니다.
가장 좋은 추측은 union을 사용하여 구성을 지연 (이 경우 다소 의미가 없음) 또는 pending_fifo의 파괴 (메모리 누수로 이어짐)를 방지하는 것입니다. 그러나 사용법의 예없이 말하기는 어렵습니다.
—
Konstantin Stupnik