몇개 단위로 thread 수행하기

nintyning의 이미지

안녕하세요 학교에서 프로젝트 진행중에 스레드를 몇개씩 진행 시켜야 하는 상황이 발생하였습니다.

그래서 스레드의 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 를 진행 시키는지 알 수가 없네요.
혹시 저런 방식의 문제를 해결하신분 계신가요?

klara의 이미지

사용하시는 join 함수의 레퍼런스를 읽어보세요.
레퍼런스를 읽고도 이해가 안되시는 거라면 레퍼런스를 첨부하여 레퍼런스의 어떤 부분이 이해가 안되시는 건지를 질문해주세요.

nintyning의 이미지

먼저 답변에 감사드립니다.
Blocks the current thread until the thread identified by *this finishes its execution.

레퍼런스에는 위와 같이 설명이 되어 있는데요. 제가 이전에 알던 것과 좀 달라서요 제가 알고 있던 thread join은 "함수가 리턴 되지 않고 대기 한다." 였습니다. 그러니까 메인 스레드의 함수의 모든 코드가 실행은 되고 단지 리턴이 안되고 block 되는 것인지 아니면 join이 호출된 그 시점에서 block 되는 것인지 헷갈리는 것입니다.

klara의 이미지

'current thread'란 join을호출하고 있는 스레드를 말합니다.
메인 스레드안에서 join을 호출했다면 메인 스레드를 block합니다.
thread를 block하면 그점에서 더이상 진행이 안되는 겁니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.