본문 바로가기

쓰레드2

프로세스와 쓰레드의 차이점 프로세스 1. 운영체제로부터 자원을 할당받은 작업의 단위. 2. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터를 프로세스라 부른다. 3. 독립적이기 때문에 메모리영역을 다른 프로세스와 공유하지 않는다. 4. 최소 1개의 쓰레드를 가지고 있다. 쓰레드 1. 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 2.stack만 따로 할당 받는다. 나머지 메모리 영역은 공유해서 사용한다. 3. 다른 쓰레드의 실행 결과를 즉시 확인할 수 있다. 4. 프로세스 내에 존재하여 프로세스가 할당받은 자원을 이용하여 실행된다. 2023. 12. 19.
쓰레드 관련 error(philosopher) 1. 개선전 사진 2. 개선후 사진 우선 philosopher라고 철학자 문제를 c로 구현해 보았다. 위의 사진에서 사진1에서 philo->check->die = 1 이 died가 프린트되고난 후에 바뀌게 된다. 내코드에서는 die = 1 이 된다면 쓰레드가 종료되는 플레그 같은 역활을 하게 된다. 이 때 많은 수의 쓰레드를 돌리면 died가 먼저 출력되고 philo->check->die = 1로 바뀌는 그 사이 시간에 다른 쓰레드에서 어떤 문구를 출력 할수 있게 된다. 따라서 사진2에서 본거와 같이 die = 1 가 먼저 바뀌고 나서 died를 출력하게 된다면 died가 다른쓰레드 문구 보다 먼저 출력되는 일이 없어진다. 이러한 시간차이도 꼼꼼히 생각해봐야할 것 같다. 멀티 쓰레드를 써야할 일이 있다면.. 2023. 7. 4.
728x90