몇개 단위로 thread 수행하기
글쓴이: nintyning / 작성시간: 금, 2015/06/12 - 12:46오후
안녕하세요 학교에서 프로젝트 진행중에 스레드를 몇개씩 진행 시켜야 하는 상황이 발생하였습니다.
그래서 스레드의 join 함수를 이용하려 하는데요
for loop 안에 for loop 이 돌면서
안의 for loop이 스레드를 생성하게 하려고 합니다.
즉 러프하게 의사 코드로 나타내면
총 100 개의 스레드를 10개씩 진행 한다고 한다면
for 0 에서 10 까지
.......for 0 에서 10까지
............스레드 t 생성
............큐에 t를 저장
.......end for
.......for 큐의 시작 부터 끝까지
............큐의 t.join
.......end for
end for
이런식으로 하면 안의 두번째 for loop 문의 join을 10개 씩 부르게 되니까 10개씩 동시에 쓰레드가 진행되고
그렇게 10번 하게 되어 총 100이라고 생각되는데
안의 두번째 loop의 마지막 join에서 메인 스레드가 대기하는지 아니면 다음 메인 for loop 를 진행 시키는지 알 수가 없네요.
혹시 저런 방식의 문제를 해결하신분 계신가요?
Forums:
사용하시는 join 함수의 레퍼런스를 읽어보세요.
사용하시는 join 함수의 레퍼런스를 읽어보세요.
레퍼런스를 읽고도 이해가 안되시는 거라면 레퍼런스를 첨부하여 레퍼런스의 어떤 부분이 이해가 안되시는 건지를 질문해주세요.
레퍼런스와 예전에 배운것과 달라서 헷갈리네요.
먼저 답변에 감사드립니다.
Blocks the current thread until the thread identified by *this finishes its execution.
레퍼런스에는 위와 같이 설명이 되어 있는데요. 제가 이전에 알던 것과 좀 달라서요 제가 알고 있던 thread join은 "함수가 리턴 되지 않고 대기 한다." 였습니다. 그러니까 메인 스레드의 함수의 모든 코드가 실행은 되고 단지 리턴이 안되고 block 되는 것인지 아니면 join이 호출된 그 시점에서 block 되는 것인지 헷갈리는 것입니다.
'current thread'란 join을호출하고
'current thread'란 join을호출하고 있는 스레드를 말합니다.
메인 스레드안에서 join을 호출했다면 메인 스레드를 block합니다.
thread를 block하면 그점에서 더이상 진행이 안되는 겁니다.
댓글 달기