상호 배제와 세마포어는 멀티스레드 프로그래밍의 두 가지 기초입니다. 해당 원리에 대해서는 자세히 설명하지 않겠습니다. 운영 체제 책을 읽거나 온라인에서 확인하세요.
상호 배제를 구현하려면 어떤 운영 체제든 세 단계가 필수입니다.
뮤텍스 잠금 초기화
잠금 작업
잠금 해제 작업
시스템마다 구현된 기능에는 약간의 차이만 있지만 기능은 실제로 유사합니다. 잠금 작업과 잠금 해제 작업 중에 대부분의 시스템에는 항상 잠기지 않도록 하는 타임아웃 메커니즘이 있습니다. 여기서는 프레임워크의 단순화를 위해 시간 초과를 설정하지 않았습니다. 잠금 작업 중에 잠금을 얻을 수 없으면 영원히 기다리게 됩니다.
Mutex의 기본 클래스는 다음과 같습니다
class CMutex { public: CMutex(const char *pName = NULL); //初始化锁 ~CMutex(); virtual bool Lock()=0; //锁操作,纯虚函数 virtual bool UnLock()=0; //解锁操作,纯虚函数 const char * getName(void) const { return mutex_name; } protected: char *mutex_name; //锁名字 };
각 시스템의 구현에는 초기화, 잠금 동작의 세 부분을 완료해야 합니다. , 잠금 해제 작업 Linux에서는 이 세 가지 작업이 매우 간단하므로 여기에 코드를 게시하지 않겠습니다.
마찬가지로 세마포어 Sem의 경우 각 시스템의 구현은 유사하며
세마포어 초기화
세마포어(세마포+1) 보내기
세마포어 수신(Semaphore - 1)
Sem 기본 클래스는 다음과 같습니다.
class CCountingSem { public: typedef enum { kTimeout, kForever }Mode; CCountingSem(); //初始化信号量 ~CCountingSem(); virtual bool Get() = 0; //接收信号量 virtual bool Post(void) = 0; //发送信号量 };
이와 같습니다 , 특정 구현에 대한 코드는 게시하지 않겠습니다.
물론 디자인 패턴을 만족하는 시스템을 위해서는 새로운 뮤텍스 락과 세마포어를 생성할 때 당연히 이러한 클래스를 직접 새로 만들 수는 없고 간단한 메소드를 통해 반환해야 합니다. 프로젝트의 경우 COperatingSystemFactory 클래스에 newMutex 및 newCountingSem 메서드를 추가하고 COperatingSystemFactory의 운영 체제 판단을 통해 해당 엔터티를 반환합니다.
class COperatingSystemFactory { public: static COperatingSystem *newOperatingSystem(); static CCountingSem *newCountingSem(unsigned int init=0); //参数是信号量的初始值,一般为0 static CMutex *newMutex(const char *pName=NULL); };
그럼 뮤텍스와 세마포어는 어떻게 사용하나요? 메인 함수에서 뮤텍스와 세마포어를 먼저 적용해보겠습니다. 이들 중 일부 사이에 뮤텍스 잠금이 필요한 경우 해당 스레드에 적용된 뮤텍스 잠금을 할당한 후 직접 사용할 수 있습니다. 각 스레드 클래스는 직접 작성하고 CThread에서 상속받았습니다. 내부의 멤버 변수가 main에서 적용된 뮤텍스 잠금과 어떻게 관련되는지는 말할 것도 없이 공개 할당으로 설정할 수도 있습니다. 비공개로 설정된 기능을 사용하면 모든 것이 귀하에게 달려 있습니다.
뮤텍스 잠금 및 세마포어를 사용하면 메시지 큐를 시작할 수 있으며 메시지 큐를 사용하면 가장 간단한 멀티스레딩 모델이 완성됩니다.
github 주소:
https://github.com/wyh267/Cplusplus_Thread_Lib
위는 C++ 멀티스레딩 프레임워크입니다. (2) :뮤텍스 상호 배제 및 Sem 세마포어 내용에 대한 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!

C# 및 .NET 런타임은 개발자가 효율적이고 강력하며 크로스 플랫폼 개발 기능을 강화하기 위해 긴밀히 협력합니다. 1) C#은 .NET 프레임 워크와 완벽하게 통합하도록 설계된 유형 안전 및 객체 지향 프로그래밍 언어입니다. 2) .NET 런타임은 C# 코드 실행을 관리하고, 쓰레기 수집, 유형 안전 및 기타 서비스를 제공하며, 효율적이고 크로스 플랫폼 운영을 보장합니다.

C# .NET 개발을 시작하려면 다음과 같은 것이 필요합니다. 1. C#의 기본 지식과 .NET 프레임 워크의 핵심 개념을 이해하십시오. 2. 변수, 데이터 유형, 제어 구조, 기능 및 클래스의 기본 개념을 마스터하십시오. 3. LINQ 및 비동기 프로그래밍과 같은 C#의 고급 기능을 배우십시오. 4. 일반적인 오류에 대한 디버깅 기술 및 성능 최적화 방법에 익숙해 지십시오. 이러한 단계를 통해 C#.NET의 세계를 점차적으로 침투하고 효율적인 응용 프로그램을 작성할 수 있습니다.

C#과 .NET의 관계는 분리 할 수 없지만 같은 것은 아닙니다. C#은 프로그래밍 언어이며 .NET은 개발 플랫폼입니다. C#은 코드를 작성하고 .NET의 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행되는 데 사용됩니다.

C#.NET은 여러 응용 프로그램 개발을 지원하는 강력한 도구 및 라이브러리를 제공하기 때문에 여전히 중요합니다. 1) C#은 .NET 프레임 워크를 결합하여 개발 효율적이고 편리하게 만듭니다. 2) C#의 타입 안전 및 쓰레기 수집 메커니즘은 장점을 향상시킵니다. 3) .NET은 크로스 플랫폼 실행 환경과 풍부한 API를 제공하여 개발 유연성을 향상시킵니다.

C#.NETISVERSATILEFORBOTHWEBBANDDESKTOPDEVENTROMMENT.1) FORWEB, useASP.NETFORRICHINTERFACES.3) FORDESKTOP.3) USEXAMARINFORCROSS-PLATFORMDEEVENTRIMMENT, LINABILEDEV, MACODEDEV, and MACODEDOWS, 및 MACODEDOWS.

C# 및 .NET는 지속적인 업데이트 및 최적화를 통해 신흥 기술의 요구에 적응합니다. 1) C# 9.0 및 .NET5는 레코드 유형 및 성능 최적화를 소개합니다. 2) .NETCORE는 클라우드 네이티브 및 컨테이너화 된 지원을 향상시킵니다. 3) ASP.NETCORE는 최신 웹 기술과 통합됩니다. 4) ML.NET는 기계 학습 및 인공 지능을 지원합니다. 5) 비동기 프로그래밍 및 모범 사례는 성능을 향상시킵니다.

C#.netissuitable forenterprise-levelapplications는 richlibraries, androbustperformance, 그러나 itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical, wherelanguagesslikerustorthightordogrordogrognegrognegrognegrognecross-platformdevelopmentor.

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
