하나의 프로세스(Connection을 함께 사용)에서 여러개의 Thread를
돌립니다.
그 각각의 쓰레드에서 DB SELECT를 합니다.
적어도 4개의 (같은 일을 하는) 쓰레드에서 하나의 MYSQL DB의 같은
Database의 같은 Table일수도
있고, 다른 Table일수도 있는데, 하여튼 4개의 쓰레드에서 하나의
db로 select를 합니다.
그런데, 동기화의 문제인듯 프로세스가 죽습니다.
여러쓰레드에서 select를 할 경우에는 문제가 없을줄 알았는데,
아니였습니다.
그래서 그 해결방법으로 저는 mutex를 사용하였습니다.
프로세스하나에서 전역으로 mutex를 잡아놓고,
각각의 쓰레드에서 mysql_query를 하기전에 mutex를 lock을
시키고
결과를 받은후 unlock을 시킵니다.
이 해결방안이 정답은 아닌듯한데, 다른 해결방법이 있는지
모르겠군요.
저의 처음 의도는 단순 select이므로 여러개의 쓰레드로 돌려도
mutex같은 넘을 쓰지 않더라도
잘 돌아갈거라고 생각했었는데, 아니였던거 같습니다. 한 10개 넘게
쓰레드를 돌리면 그만큼
query응답 속도가 더 올라갈거라고 생각했었는데, 보통
4개정도부터는 거의 똑같았습니다.
여러쓰레드에서 하나의 mutex를 사용하면 그 만큼의 성능이
저하될꺼라고 생각되는데,
고수님들의 생각은 어떠합니까?
|