2013-07-21 1 views
2

ISO/IEC 14882 : 2011 (C++ 11)의 § 1.10.11은 § 1.10.12에서 "발생 이전"관계와의 유일한 차이점은 평가 사이에 "스레드 간 발생 이전"관계를 정의한다. B가 B보다 먼저 시퀀싱되지만 충분하지 않은 경우 A 이전의 인터 스레드는 B보다 먼저 발생합니다. 왜 "인터 스레드가 발생하기 전에"중요한 정의가 필요합니까? ISO/IEC 14882 : 2011에 정의 된 "inter-thread happens before"관계가있는 이유는 무엇입니까?

은 § 1.10.11의주의 사항을 허용하지 않습니다 "전에 스레드 간 일이"제안 그의 유일한 관련 부분에 "전에 순서가"있다

이 허용하는 "스레드 간 이전에 발생"평가 과도하게 폐쇄 될 것임

그것은 무엇을 의미 하느냐? 나는 과도기적 폐쇄가 무엇인지 알고 있으며 어떤 조작에 대해 세트가 닫히는 것이 무엇을 의미하는지 알지만, 나는 "일시적으로 닫힌다"는 말을 결코 들어 본 적이 없으며 Google과 컨텍스트 둘 다 나를 실패로 여긴다.

답변

5

"인터 스레드가 발생하기 전에"는 설명 용으로 만 정의됩니다. "일어난다"는 "before 또는 inter-thread before"가 발생하고 "inter-thread happens before"의 개념은 다른 용도로 사용되지 않는다는 의미로 정의됩니다. "Sequenced before"는 동일한 스레드에서 발생하는 평가를 설명하며, "inter-thread happens before"는 다른 스레드에서 발생하는 평가에 적용됩니다. "전에 발생합니다"는 둘을 결합합니다.

+0

아, 맞습니다. "일시적으로 닫힌"발언이 무엇을 의미합니까? 아마 나는 별도의 질문으로 그것을 물어야한다. –

+0

@SheaLevy이 질문에 대한 대답은 지금까지 있습니까? 그렇지 않다면 나는이 주제에 관심이 있기 때문에 새로운 질문을 만들고 여기에 링크를 게시 할 것입니다. – splotz90

0

은 "이적 폐쇄"발언 단순히 관계 전이가 있음을 의미하십시오 간 스레드 B와 B 간의 스레드 C 전에 발생하기 전에 발생하면 다음 스레드 간은 C.

해당 속성 미연 "이전에 순서가 정해진"다음에 "순서가 정해진"순서로 끝나는 순서로 인해 "이전에 순서가 정해진"혼자만이 "스레드 간 발생"으로 간주됩니다.

"이전에 발생 함"이 전환 적이 지 않음을 의미합니다. A가 B와 B가 C보다 먼저 나오기 전에 일어나면 반드시 A가 C보다 먼저 일어나는 것은 아닙니다.

관련 문제