드디어 즐거운 금요일(?)입니다.
여건상 월,화,수,목,금,금,금 이신 분들도 많으실 것으로 생각합니다. ㅎㅎ
각설하고..
멀티스레드와 관련하여 이미지 보정 최적화 작업을 진행중입니다.
하나의 이미지를 각 픽셀별로 보정을 하는 작업인데요, 단순 반복 작업이라
속도를 높이고 싶어 pthread를 사용하고 있습니다.(SMP가 지원되는 커널상에서) Thread 수는 인자로 동적으로 정하도록 하였구요.
그런데 신기한 것이 스레드 수를 늘려도 각 CPU들이 공평하게 작업을 나누어 가져버리더군요.
예를 들어, 10%의 작업량을 먹었다면 두 개의 CPU가 5% : 5%씩 작업을 하더라구요.
프로세스의 우선순위도 조정도 해보고 동적으로(필요할 때마다) 스레드를 생성도 해보고,
미리 스레드를 생성한 후에 데이터를 던져주는 폴링방식으로도 해보았는데 마찬가지네요.
당연히 메모리는 각 스레드마다 따로 할당하였습니다.
공유메모리1 => 스레드1
공유메모리2 => 스레드2