일반적인 문제 다중 스레드 동기화 메커니즘에는 무엇이 포함됩니까?

다중 스레드 동기화 메커니즘에는 무엇이 포함됩니까?

Jan 07, 2021 pm 03:24 PM
다중 스레드 동기화 메커니즘

다중 스레드 동기화 메커니즘에는 다음이 포함됩니다. 1. "독점적 소유"를 달성하는 데 사용되는 중요 섹션 2. 제한된 리소스를 추적하는 데 사용되는 세마포 3. 서로 다른 스레드 간에 구현될 수 있는 뮤텍스 "독점적 소유" 해당 스레드는 서로 다른 프로세스에 속합니다. 4. 이벤트는 일반적으로 중첩된 I/O에 사용되거나 일부 사용자 정의 동기화 개체를 설계하는 데 사용됩니다.

다중 스레드 동기화 메커니즘에는 무엇이 포함됩니까?

이 문서의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.

다중 스레드 동기화 메커니즘에는 다음이 포함됩니다.

1. Critical SectionCritical Section

Critical section(临界区)用来实现“排他性占有”。适用范围是单一进程的各线程之间。它是:

  •  一个局部性对象,不是一个核心对象。

  •  快速而有效率。

  •  不能够同时有一个以上的 critical section 被等待。

  •  无法侦测是否已被某个线程放弃。

  • 可以实现线程间互斥,不能用来实现同步。

2、Semaphore

Semaphore 被用来追踪有限的资源。它是:

  • 一个核心对象。

  •  没有拥有者。

  •  可以具名,因此可以被其他进程开启。

  •  可以被任何一个线程释放(released)。

  • 既能实现线程间互斥,也能实现线程间同步。

  • 在跨进程中使用时,如果拥有信号量的线程意外结束,其它进程不会收到通知。

3、Mutex

Mutex 是一个核心对象,可以在不同的线程之间实现“排他性占有”,甚至即使那些线程分属不同进程。它是:

  • 一个核心对象。

  •  如果拥有 mutex 的那个线程结束,则会产生一个 “abandoned” 错误信息。

  • i可以具名,因此可以被其他进程开启。

  • 只能被拥有它的那个线程释放(released)。

  • 在跨进程中使用时,如果拥有互斥器的进程意外结束,其它进程会收到一个WAIT_ABANDOEND消息。

4、Event

Event object 通常使用于 overlapped I/O,或用来设计某些自定义的同步对象。它是:

  •  一个核心对象。

  • 可是用来实现线程的互斥与同步。

  • 可以具名,因此可以被其他进程开启。

  • 在跨进程中使用时,如果拥有信号量的线程意外结束,其它进程也不会受到通知。

注意:临界区和互斥器都有“线程所有权”的概念,所以它们是不能用来实现线程间的同步的,只能用来实现互斥。原因是由于创建临界区或互斥器的线程可以不用等待LeaveCriticalSection()SetEvent()就可以无条件进入保护的程序段,因为它拥有这个权利。另外,互斥器可以很好的处理”遗弃“操作。若线程在未释放对向象的时候就意外终止的,其它线程可以等待到一个WAIT_ABANDONED_0

Critical section(Critical section)은 "독점적 소유"를 달성하는 데 사용됩니다. 적용 범위는 단일 프로세스의 스레드 사이입니다.

  • 핵심 개체가 아닌 로컬 개체입니다.

  • 빠르고 효율적입니다.

  • 동시에 두 개 이상의 중요한 섹션을 기다릴 수 없습니다.

  • 스레드에 의해 중단되었는지 여부를 감지할 수 없습니다. 🎜
  • 🎜스레드 간 상호 배제를 달성할 수 있지만 동기화를 달성하는 데 사용할 수는 없습니다. 🎜
🎜2. 세마포어🎜🎜세마포어는 제한된 리소스를 추적하는 데 사용됩니다. 🎜
  • 🎜핵심 개체입니다. 🎜
  • 🎜 주인이 없습니다. 🎜
  • 🎜 이름을 지정할 수 있으므로 다른 프로세스에서 열 수 있습니다. 🎜
  • 🎜 어떤 스레드로든 공개할 수 있습니다. 🎜
  • 🎜스레드 간 상호 배제와 쓰레드 간 동기화를 실현할 수 있습니다. 🎜
  • 🎜프로세스 간에 사용할 때 세마포어를 소유한 스레드가 예기치 않게 종료되면 다른 프로세스에 알리지 않습니다. 🎜
🎜3. Mutex🎜🎜Mutex는 해당 스레드가 다른 프로세스에 속하더라도 서로 다른 스레드 간에 "독점적 소유"를 달성할 수 있는 핵심 개체입니다. 🎜
  • 🎜핵심 개체입니다. 🎜
  • 🎜 뮤텍스를 소유한 스레드가 종료되면 "포기됨" 오류 메시지가 생성됩니다. 🎜
  • 🎜i에는 이름을 지정할 수 있으므로 다른 프로세스에서 열 수 있습니다. 🎜
  • 🎜 이를 소유한 스레드에 의해서만 해제될 수 있습니다. 🎜
  • 🎜프로세스 간에 사용될 때 뮤텍스를 소유한 프로세스가 예기치 않게 종료되면 다른 프로세스는 WAIT_ABANDOEND 메시지를 받게 됩니다. 🎜
🎜4. 이벤트🎜🎜이벤트 개체는 일반적으로 중첩된 I/O에 사용되거나 일부 사용자 정의 동기화 개체를 설계하는 데 사용됩니다. 🎜
  • 🎜 핵심 개체입니다. 🎜
  • 🎜스레드의 상호 배제 및 동기화를 달성하는 데 사용됩니다. 🎜
  • 🎜이름을 지정할 수 있으므로 다른 프로세스에서 열 수 있습니다. 🎜
  • 🎜프로세스 간에 사용할 때 세마포어를 소유한 스레드가 예기치 않게 종료되면 다른 프로세스에 알리지 않습니다. 🎜
🎜참고: 중요 섹션과 뮤텍스는 모두 "스레드 소유권" 개념을 가지므로 스레드 간 동기화를 달성하는 데 사용할 수 없고 상호 배제를 구현하는 데만 사용할 수 있습니다. 그 이유는 크리티컬 섹션이나 뮤텍스를 생성한 스레드가 이 권한을 갖고 있기 때문에 LeaveCriticalSection(), SetEvent()를 기다리지 않고 무조건 보호된 프로그램 섹션에 진입할 수 있기 때문입니다. 또한 뮤텍스는 "포기" 작업을 매우 잘 처리할 수 있습니다. 객체를 해제하지 않고 스레드가 예기치 않게 종료되면 다른 스레드는 WAIT_ABANDONED_0을 기다릴 수 있습니다. 하지만 이벤트나 세마포어 모두 그렇게 할 수 없습니다. 🎜🎜이벤트와 세마포어 모두 스레드와 프로세스 간의 상호 배제 및 동기화를 달성할 수 있습니다. 🎜🎜사용 효율성 측면에서 보면 임계 섹션은 커널 개체가 아니기 때문에 효율성이 가장 높으며, 나머지 3개는 운영 체제의 도움을 받아 구현해야 하므로 효율성이 상대적으로 낮습니다. 낮은. 🎜🎜그러나 프로세스 전반에 걸쳐 사용하려면 뮤텍스, 이벤트 개체 및 세마포어를 사용해야 합니다. 🎜🎜간단히 말하면, 디자인할 때 전역 변수를 먼저 사용하지 마십시오. 그렇지 않은 경우 Inter...() 함수를 먼저 사용한 다음 임계 섹션 객체, 마지막으로 이벤트, 뮤텍스 및 세마포를 사용하는 것을 고려하십시오. 🎜

위 내용은 다중 스레드 동기화 메커니즘에는 무엇이 포함됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Deepseek 웹 버전 공식 입구 Deepseek 웹 버전 공식 입구 Mar 12, 2025 pm 01:42 PM

국내 AI Dark Horse Deepseek은 글로벌 AI 산업에 충격을 주면서 강력하게 증가했습니다! 1 년 반 동안 단지 설립 된이 중국 인공 지능 회사는 무료 및 오픈 소스 모형 인 DeepSeek-V3 및 DeepSeek-R1에 대해 글로벌 사용자로부터 광범위한 칭찬을 받았습니다. DeepSeek-R1은 이제 OpenAIO1의 공식 버전과 비교할 수있는 성능으로 완전히 출시되었습니다! 웹 페이지, 앱 및 API 인터페이스에서 강력한 기능을 경험할 수 있습니다. 다운로드 방법 : iOS 및 Android 시스템을 지원하면 사용자가 App Store를 통해 다운로드 할 수 있습니다. Deepseek 웹 버전 공식 입구 : HT

심층적 인 검색 DeepSeek 공식 웹 사이트 입학 심층적 인 검색 DeepSeek 공식 웹 사이트 입학 Mar 12, 2025 pm 01:33 PM

2025 년 초, 국내 AI "Deepseek"은 놀라운 데뷔를했습니다! 이 무료 및 오픈 소스 AI 모델은 OpenAI의 O1의 공식 버전과 비교할 수있는 성능을 가지고 있으며 웹 측, 앱 및 API에서 완전히 출시되어 iOS, Android 및 웹 버전의 다중 터미널 사용을 지원합니다. DeepSeek 공식 웹 사이트 및 사용 지침의 심도있는 검색 : 공식 웹 사이트 주소 : https://www.deepseek.com/using 웹 버전 : 위의 링크를 클릭하여 DeepSeek 공식 웹 사이트를 입력하십시오. 홈페이지에서 "대화 시작"버튼을 클릭하십시오. 먼저 사용하려면 휴대폰 확인 코드와 함께 로그인해야합니다. 로그인 한 후 대화 인터페이스를 입력 할 수 있습니다. DeepSeek은 강력하고 코드를 작성하고 파일을 읽고 코드를 만들 수 있습니다.

DeepSeek의 바쁜 서버 문제를 해결하는 방법 DeepSeek의 바쁜 서버 문제를 해결하는 방법 Mar 12, 2025 pm 01:39 PM

DeepSeek : 서버와 혼잡 한 인기있는 AI를 처리하는 방법은 무엇입니까? 2025 년 핫 AI로서 DeepSeek은 무료이며 오픈 소스이며 OpenAIO1의 공식 버전과 비교할 수있는 성능을 가지고 있으며, 이는 인기를 보여줍니다. 그러나 높은 동시성은 서버 바쁜 문제를 가져옵니다. 이 기사는 이유를 분석하고 대처 전략을 제공합니다. DeepSeek 웹 버전 입구 : https://www.deepseek.com/deepseek 서버 바쁜 이유 : 높은 동시 액세스 : DeepSeek의 무료 및 강력한 기능은 동시에 많은 사용자를 유치하여 과도한 서버로드를 초래합니다. 사이버 공격 : DeepSeek은 미국 금융 산업에 영향을 미친다 고보고되었습니다.