내가 원자라고 할 때, 나는 명령 세트가 컨텍스트 스위칭없이 실행될 것이라는 것을 의미했다. 동일한 프로세스상의 다른 스레드에 (물론 다른 종류의 스위치도 수행되어야한다). 내가 떠올랐다 유일한 해결책은 현재 실행중인 부분을 제외한 모든 스레드를 일시 중지하고 이후에 다시 시작하는 것입니다. 더 우아한 방법?코드 조각을 원자 단위로 만들 수 있습니까 (C#)?
내가하고 싶은 이유는 여러 스레드에서 실행되는 객체의 일관된 상태를 수집하기 위해서입니다. 그러나, 그들의 코드는 변경할 수 없습니다 (이미 컴파일되어 있습니다). 그래서 뮤텍스, 세마포어 등을 삽입 할 수 없습니다. 원자 적 연산은 물론 상태 수집 (즉, 일부 변수 복사)입니다.
달성하려는 목표는 무엇입니까? 다른 모든 스레드를 일시 중단하는 것은 위험한 방법이며, 깨어있는 스레드가 무언가를 시도하고 일시 중단 된 스레드 중 하나가 잠금 해제 된 상태에서 교착 상태가 발생할 수 있습니다. –
나는 이런 맥락에서 원자라는 단어를 들어 본 적이 없다. 나는 거래의 정의 인 ACID의 일부로 만 알고 있습니다. 그건 그렇고, 왜 이것을 필요로합니까? –
개별 IL 작업은 원 자성입니다. 원 자성 조작을 지원하는 클래스는 거의 없습니다 (하나는 인터 로킹 됨). 그 외에는 아니야. 그리고 나는 그 요점을 보지 못한다. – Amy