다 중 스 레 드 프로 그래 밍 의 잠 금 (Mutex)
mutex 는 모니터 와 유사 합 니 다.그것 은 여러 스 레 드 가 특정한 시간 에 코드 블록 을 동시에 실행 하 는 것 을 방지한다.사실상 명칭 'mutex' 는 용어 '서로 배척 (mutually exclusive)' 의 약자 형식 이다.그러나 모니터 와 달리 mutex 는 크로스 프로 세 스 의 스 레 드 를 동기 화 할 수 있 습 니 다.mutex 는 Mutex 클래스 로 표 시 됩 니 다.
프로 세 스 간 동기 화 에 사용 할 때 mutex 는 'mutex' 라 고 부 릅 니 다. 다른 프로그램 에 사용 되 기 때문에 전역 변수 나 정적 변 수 를 통 해 공유 할 수 없습니다.두 프로그램 이 같은 mutex 대상 에 접근 할 수 있 도록 이름 을 지정 해 야 합 니 다.
mutex 는 프로 세 스 내 스 레 드 동기 화 에 사용 할 수 있 지만 Monitor 를 사용 하 는 것 이 바람 직 합 니 다. 모니터 는. NET Framework 를 위해 설계 되 었 기 때문에 자원 을 더욱 잘 이용 할 수 있 습 니 다.이에 비해 뮤 텍 스 류 는 Win 32 구조의 포장 이다.비록 mutex 는 모니터 보다 강하 지만 Monitor 류 에 비해 서로 조작 하고 전환 하 는 데 필요 한 계산 자원 을 더욱 소모 합 니 다.mutex 의 용법 예 시 는 Mutex 를 참조 하 십시오.
현실 작업 에서 우 리 는 Mutex 를 이용 하여 단일 인 스 턴 스 프로그램의 검 측 을 실현 할 수 있다.이것 은 사실 응용 프로그램 등급 에 대한 병행 제어 이다.
다음은 하나의 예 이다.
using System;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
static class Program
{
/// /// 。 ///
[STAThread]
static void Main()
{
Mutex mutex = null;
string mutexName = "WindowsApp";
try
{
mutex = Mutex.OpenExisting(mutexName);
if (mutex != null)
{
MessageBox.Show(" ");
return;
}
}
catch { }
finally
{
mutex = new Mutex(true, mutexName);
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
mutex.ReleaseMutex();
}
}
}
, ,
저자: 진 희 장 출처:http://blog.csdn.net/chen_xizhang 본 논문 의 저작권 은 작가 에 게 있 습 니 다. 전 재 를 환영 합 니 다. 그러나 작가 의 동의 없 이 이 성명 을 보류 하고 글 페이지 의 뚜렷 한 위치 에서 원문 연결 을 해 야 합 니 다. 그렇지 않 으 면 법률 적 책임 을 추궁 할 권 리 를 보류 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 다 중 스 레 드 메커니즘 의 스 레 드 생 성target 을 실행 대상 으로 지정 한 name 을 이름 으로 하고 group 에서 참조 하 는 스 레 드 그룹의 일원 으로 새 Thread 대상 을 할당 합 니 다. 이 스 레 드 가 독립 된 Runnable 실...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.