mutex 예제

안녕하세요 여러분, qemu에서 코드를 실행하고 더 많은 스레드를 추가하려고합니다. 예를 들어 5 개의 스레드를 추가하고 조인합니다. 그러나 그것은 작동하지 않습니다, 아무도 나를 도울 수 있습니까… jeff@jeff-VirtualBox:~/팔-강의-내/팔-강의/실험실-2$ 깨끗 하 게; qemu rm -f atomic.o mutex.o 원자 팔 리눅스-gnueabihf-gcc -c-pthread-정적-o atomic.o atomic.o atomic.c arm-linux-gnueabihf-g cc -c -pthread -o mutex.o mutex.o mutex.o arm-linux-gnueabihf-gc -pthread -static-o atomic.o mutex.o qemu-arm ./atomic 만들기 스레드 0 확인 @chmurli이 문서는 mutex를 사용하여 스레드 동기화를 말하고 따라서 나는 뮤텍스를 사용하는 방법에 대한 작은 예를 주었다. 나는 코드의 중요한 섹션에서 mutex를 사용했으며 이것이 잘못되었다고 생각하지 않습니다. 스레드 동기화 문제 동기화 문제를 연구하는 예제 코드 : 안녕 히만슈, 무엇이든 ppl이 링크가 초보자에게 매우 유용합니다 말한다. Ppl은 너무 간단한 형태로 스레드를 설명하기위한 노력을 주셔서 감사합니다. Ppl더 사전 예제를 원하는 경우 그들은 구글을 참조 하 고 심지어 그들은 해결할 수 없는 수많은 힘든 예제를 얻을 수 있습니다. 어떤 방법으로든 여러분의 노력에 진심으로 감사드립니다. 나는 이것이 MUTEX가 어떻게 작동하고 opperates를 이해하는 훌륭하고 명확한 예였다, 동의하지 않는다. 이 예제는 자체 스레드의 사용을 저해하지만 이 예제는 그렇지 않습니다. 이 문서는이 분야의 초보자를 위한 것입니다 마음.

그리고 명백한 이것은 매우 명확 한 작업 MUTEX를 설명 하는 매우 기본적인 예, 멀티 스레딩에 관한 거의 추가 정신 오버 헤드를 추가, 이 문서에 대 한 되지 않습니다. 작가 덕분에, 이것은 정말 나 같은 초보자 도움이, 멀티 스레딩에 완전히 새로운. 이제 MUTEX의 작업과 이를 구현하는 방법에 대해 매우 명확한 이해를 가지고 있습니다! 더 많은 튜토리얼이 하나만큼 포괄적이었다 소원! 가능한 그래머 실수에 대한 실례. 이 예제에서는 두 개의 스레드(작업)가 만들어지고 이러한 스레드의 시작 함수에서 시작되고 완료될 때 작업 번호에 대한 로그를 얻기 위해 카운터가 유지됩니다. 뮤텍스는 공유 리소스를 사용하기 전에 설정한 잠금이며 사용 후 릴리스됩니다. 잠금이 설정되면 다른 스레드가 잠긴 코드 영역에 액세스할 수 없습니다. 따라서 스레드 1이 공유 리소스에 액세스하지 않고 코드가 mutexes를 사용하여 스레드 1에 의해 잠겨있는 동안 스레드 2가 예약된 경우에도 스레드 2는 해당 코드 영역에 액세스 할 수 없습니다. 이렇게 하면 코드에서 공유 리소스의 동기화된 액세스가 보장됩니다. 따라서 이번에는 두 작업의 시작 및 완료 로그가 있습니다. 그래서 스레드 동기화는 Mutex를 사용하여 일어났습니다. @engeland “글로벌 변수는 mutexes에 의해 보호되어야하는 제한된 자원에 대한 나쁜 예입니다” 당신은 당신의 문을 정당화하시기 바랍니다 수 있습니까? 위의 예제는 정적으로 선언된 `카운터` 변수를 잘 작동합니다.