본문 바로가기
반응형

Mutex2

[C언어] Deadlock(교착상태) 원인과 해결법 Issues in Multithread app (DeadLock)멀티스레드 환경에서 나올수 있는 문제들 : 교착상태 Dining-Philosophers Problem철학자-젓가락 문제는 멀티스레딩 환경에서 데드락(Deadlock)을 설명하기 위해 자주 사용되는 고전적인 문제이다.문제 설명:철학자는 생각과 식사 중 하나만 할 수 있다.식사를 하기 위해서는 양쪽 젓가락 두 개를 들어야 한다.젓가락은 철학자와 이웃 사이에서 공유된다.한 철학자가 들고 있는 젓가락은 다른 철학자가 사용할 수 없다.식사를 마치면 철학자는 두 젓가락을 내려놓는다.Deadlock데드락이란 서로 다른 스레드(또는 프로세스)가 자원을 점유한 상태에서 서로의 자원을 기다리며 무한정 대기하는 상황을 말한다.Deadlock이 발생하는 이유:H.. 2025. 1. 28.
[C언어] pthread 라이브러리를 이용한 스레드 동기화 Threads Synchornization  Multi Thread에서 전역 변수, 힙 영역, malloc 등은 Data Sharing을 한다.다음 코드는 입력한 초만큼 전역 변수 cnt가 증가하는 예제이다.volatile: 컴파일러 최적화 방지. cnt 변수를 레지스터가 아닌 메모리에서 직접 읽고 쓰게 만듦volatile int cnt;void* do_loop (void *loop){ while(1) cnt++; return NULL;}int main(int argc, char *argv[]){ int status, sec; pthread_t thread_id; cnt = 0; sec = atoi(argv[1]); if (pthread_create(&threa.. 2025. 1. 28.