2016-06-14 3 views
1

세마포 및 뮤텍스는 스레드와 프로세스 또는 스레드 만 동기화합니까, 아니면 프로세스 만 동기화합니까?세마포 및 뮤텍스 동작에 대한 의심

편집 : 내 실수는 쉘이 아니라 C입니다. 내가 쉘을 통해 프로그래밍 한 이후로 나는 그것을 잘못 이해했다. 한 가지 더 : 통신과 동기화가 동일합니까?

+1

특히 "셸"뮤텍스/세마포어 메커니즘에 대해 이야기하고 있습니까? 쉘은 일반적으로 그 기능을 제공하지 않습니다. 쉘은 뮤텍스의 일부 기능을 구현하는 데 사용할 수있는 파일 잠금을 제공합니다. 그러나 당신이 정확히 말하고있는 것이 명확하지 않습니다. – kaylum

+0

내 나쁜 .. 그것은 쉘이 아니에요 –

+1

[세마포어 및 뮤텍스 스레드 및 프로세스 동기화] (http://stackoverflow.com/questions/12251701/semaphores-and-mutex-for-thread-and-process- 동기화) – kaylum

답변

1

SysV IPC semaphores 프로세스간에 동기화합니다.

POSIX 세마포어를 사용하면 sem_init(3)의 pshared 인수를 통해 선택할 수 있습니다. pshared = 1을 사용하면 공유 메모리 영역에 액세스 할 수있는 모든 작업 (스레드 및 프로세스 모두 가능)간에 동기화 할 수 있습니다. 세마포어.

Pthread mutexes 스레드에서 작동합니다. (Pthread에는 세마포어와 기능적으로 동일한 조건 변수도 있습니다).

스레드 버전은 공유 카운터를 관리 할 수있는 프로세스이기 때문에 성능이 좋지만 세마포어를 사용하면 커널이이를 수행해야합니다.

동기화는 작업이 계속 될 수 있는지 또는 다른 작업과 함께 대기해야 하는지를 결정하는 것에 관한 것으로, 예를 들어 작업간에 공유되는 세마포어의 증가 및 감소를 통한 통신이 포함됩니다.