#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
pthread_mutex_t *mutexes;
void *thread_work(void *id)
{
long tid = (long)id;
while(some_condition)
{
pthread_mutex_lock(mutexes[0]);
}
}
나는 동적으로 main
기능에, 그것은 스레드 mutexes[0]
를 사용하는 것이 안전 스레드 mutexes
에 대한 메모리를 할당하는 경우? 그들은 같은 뮤텍스를 참조 할 것인가, 아니면 각 스레드에 대한 사본을 만들까요?포인터가 스레드간에 공유됩니까?
기본 지식은 알고 있지만 자습서를 읽은 후에 혼란스러워합니다.
스레드가 동일한 뮤텍스에 액세스합니다. 힙 메모리는 스레드간에 공유됩니다. 이 답변은 꽤 좋습니다 http://stackoverflow.com/questions/1665419/do-threads-have-a-distinct-heap/1665432#1665432 – Baldrick
공유되지만 스레드 안전해야합니다. https://computing.llnl.gov/tutorials/pthreads/#PassingArguments –
@ Phil_12d3 그건 내 질문에 대답하지 않는다고 생각합니다. 뮤텍스를 매개 변수로 전달하고 싶지 않습니다. 나는 그것들을 전역 변수로 만들고 그것들을 쓰레드에서 참조하기 바란다. 뮤텍스의 색인은 일부 조건에 따라 선택됩니다. – pmichna