이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 30344|회답: 2

[출처] C# 자물쇠가 있는 나사산 안전

[링크 복사]
게시됨 2016. 6. 13. 오후 5:26:25 | | |

만약 코드가 여러 스레드가 동시에 실행되는 프로세스에 있다면, 동시에 코드를 실행하고 있을 수 있습니다. 각 실행 결과가 단일 스레드와 같고, 다른 변수들의 값이 예상과 같으면 스레드 안전입니다.
즉, 클래스나 프로그램이 제공하는 인터페이스는 스레드에 대해 원자적이며, 여러 스레드 간 전환이 인터페이스 실행 결과에 모호함을 발생시키지 않으므로 동기화를 고려할 필요가 없다는 뜻입니다.
스레드 안전 문제는 전역 변수와 정적 변수 모두에서 발생합니다.
각 스레드가 전역 변수와 정적 변수에 대한 읽기 연산만 있고 쓰기 연산이 없다면, 일반적으로 이 전역 변수는 스레드 안전합니다; 여러 스레드가 동시에 변수에 대해 읽기와 쓰기 작업을 수행할 경우, 일반적으로 스레드 동기화가 필요하며, 그렇지 않으면 스레드 보안에 영향을 줄 수 있습니다.

락의 목적은 다중 스레드 실행 시 동시 작업을 방지하는 것이며, 참조 유형의 잠금 객체는 잠긴 영역 내에서 한 번에 하나의 스레드만 작동할 수 있도록 허용합니다.

LOCK은 참조 타입 변수 하나만 잠글 수 있는데, 즉 주소 하나를 잠그는 것입니다




잠금 상태와 그렇지 않은 실행 결과는 다음과 같습니다:

잠금 후에는 i의 값이 하나씩 줄어들고, 점프나 반복 출력이 없으며, 0이 될 때까지 반복되지 않습니다;

잠금이 없다: i의 값 출력은 점프하며 불연속적으로 감소하며, -1 값 출력도 가질 수 있습니다;

이유: 락을 추가한 후에는 잠긴 영역에서 한 번에 한 스레드만 코드를 실행할 수 있고, 두 스레드가 순서대로 실행되므로 중단된 출력이 없습니다.




이전의:사용자가 저장 대화에서 취소됨 (MS Visual Database Tools)
다음:저장 프로시저를 실행하는 멋진 DBHelper 클래스입니다
게시됨 2016. 6. 14. 오전 10:53:36 |
 집주인| 게시됨 2022. 2. 10. 오전 9:18:58 |
.NET/C# 잠금 원칙 모니터가 심층적인 설명을 제공합니다
https://www.itsvse.com/thread-9633-1-1.html
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com