2016-10-30 11 views
2

저는 C++ 11의 std::condition_variable에 대해 배우려고합니다. 나는 cppreference.comcplusplus.com뿐만 아니라 C++0x has no semaphores? How to synchronize threads?에서 기사를 읽었습니다.C++ 11 condition_variables를 사용하여 프로세스를 동기화 할 수 있습니까?

내가 세 언급 한 기사 응답하지 않은 생각 내 질문은 다음과 같습니다 std::mutexstd::condition_variable의의 조합으로 만들어 "세마포어는"(C++0x has no semaphores? How to synchronize threads?에 대한 답변을 참조) 할 수 프로세스간에 동기화하는 데 사용할 수 semix라는 이름의 posix가 될 수있는 방법은 무엇입니까? 이러한 개체를 만드는 데 사용되는 이름과 같은 "공유 가능한"정보가 표시되지 않기 때문에이 기능을 구현할 수 있다는 것이 확실하지 않습니다.

답변

3

아니요, 이는 프로세스가 아닌 프로세스 내에서 스레드를 동기화하기위한 것입니다.

프로세스 간 통신은 공유 파일을 사용하여 구현됩니다. 프로세스 간 뮤텍스 또는 공유 메모리는 두 프로세스간에 정보 (데이터, 잠금)를 교환하기위한 파일 (예 : 임시 폴더에서 생성)입니다. boost::interprocess은 좋은 구현을 제공합니다 (링크가 필요 없으며 코드가 즉시 컴파일되므로 포함시켜야합니다).

프로세스를 동기화하려면 boost::interprocess을 봐야합니다. 그것은 synchronization mechanisms를 제공합니다. interprocess semaphore을 제공합니다.

+0

원래 질문과 함께이 질문을해야했지만 : std :: condition_variable도 카운팅 세마포어처럼 사용할 수 없습니까? std :: uniqe_lock 을 사용하므로 바이너리 세마포어로만 사용할 수있는 것 같습니다. – StoneThrow

+0

@ StoneThrow : 나는 그렇다고 대답 할 것이다.하지만 그것에 대한 분명한 대답을 얻기 위해서는 별도의 질문을해야한다. – jpo38

1

표준 C++에서 IPC (프로세스 간 통신)에 가장 가까운 것은 파일 io입니다.

표준 C++에는 메모리 내 IPC가 없습니다.