pthread_join에서 모든 형식이든지 받을수 잇지 안나요?

lkjt의 이미지

제가 알기론 pthread_join은 void라 모든지 받을수 잇다고 아는데요

코드:

pthread_join(t_thread[j], (void **)&recvqueue);

recvqueue는 std::queue 입니다.

이렇게 하면

인용:

0x10002c66에 처리되지 않은 예외가 있습니다.
0xC0000005: 0xcdcdcdd1 위치를 읽는 동안 액세스 위반이 발생했습니다.

이렇게 에러가 나옵니다.

어디를 수정해야 정상적으로 되나요?

혹시 함수에서 문제잇는건가 하고 함수에 브레이크 포인트 걸어 봣는데요

함수에 들어가지도 않더라구요./

lkjt의 이미지

pthread_t 형 변수를 동적으로 할당햇는데

그렇게 해서 에러가 낫나 봅니다 -_-;

bugiii의 이미지

pthread_join 의 두번째 인자는 thread 가 종료될 때 리턴되거나 pthread_exit 의 인자 값을 리턴합니다. 이때 이값은 void* 타입이 됩니다.

단순히 포인터를 담을 크기 만큼의 타입만이 허용되는 것이지 이것을 이용해서 어떤 객체를 마음대로 전달하는데 사용할 수 없습니다.

제시하신 코드의 의도하는 바는 쓰레드가 종료될 때 어떤 큐를 넘겨주고 싶어한다고 판단하겠습니다.

이런 경우 쓰레드쪽에서 쓰레드 스택에 만들어진 큐는 넘길 수 없고 큐의 포인터 타입에 new 해서 큐를 만드셔야 하고 이것을 join 하는 쪽에서 큐의 포인터 타입으로 받아야 합니다. 물론 받은 다음 사용후에는 delete 해야겠구요.

원하시는 것은

typedef queue<...> queue_t;

void* thread_proc( void* )
{
    queue_t* q( new queue_t );
    q->push_back( ... );
    ....
    return reinterpret_cast<void*>(q);
}

int main()
{
    pthread_create( &thread, ... );
    queue_t* q;
    pthread_join( thread, reinterpret_cast<void**>(&q) );
}

이런 식이 되어야 하지 않을까요?

p.s. lkjt 님, 질문하실 때 의도하는 바를 조금 더 자세히 설명해주세요... 현상만 설명하면 질문의 의도를 한번 더 파악해야 합니다...

lkjt의 이미지

네,

그런데 pthread_join함수는 함수가 끝날때까지 기다려야 하지만

connect 하면서 시간이 걸릴경우

그냥 나와버리네요

그래서 Sleep을 주면 커넥트 에러가 뜨구요.,,,

bugiii의 이미지

lkjt wrote:
네,

그런데 pthread_join함수는 함수가 끝날때까지 기다려야 하지만

connect 하면서 시간이 걸릴경우

그냥 나와버리네요

그래서 Sleep을 주면 커넥트 에러가 뜨구요.,,,

p


저보고 어쩌라구요. 정말 화가 나려고 합니다. 제가 바보인가요? 마지막의 p는 정말이지... 그런거 쓰지마세요.
lkjt의 이미지

p 오타입니다.

죄송합니다.

ps

ps. 하고 추신을 적으려고 햇는데 지우다가 p가 안지워진듯 합니다.

정말 죄송합니다.

bugiii의 이미지

bugiii wrote:
lkjt wrote:
네,

그런데 pthread_join함수는 함수가 끝날때까지 기다려야 하지만

connect 하면서 시간이 걸릴경우

그냥 나와버리네요

그래서 Sleep을 주면 커넥트 에러가 뜨구요.,,,

p


저보고 어쩌라구요. 정말 화가 나려고 합니다. 제가 바보인가요? 마지막의 p는 정말이지... 그런거 쓰지마세요.

좋습니다. 분명히 오타일 수 있습니다. 제가 흥분했습니다. 그점은 분명히 제가 오버했습니다. 죄송합니다.

하지만, 이번 글 뿐만 아니라 이전의 몇몇 글에서도 여러번 얘기가 된 것 아닌가요? lkjt님은 답답한 심정으로 여러가지 의문점을 여기에 물어보고 해결책을 구하시고 있습니다. 하지만 답변자들이 시간이 남아돌아서 상대방의 상황을 파악하고 이것저것 생각하며 답변하는 것은 아닙니다.

그러니까요... 제발 앞뒤 자르지말고 길어도 좋으니까 차근차근 뭘 해보려는데 무엇이 안되더라 정도만이라도 설명해주세요. 꼭요...

jinyeong의 이미지

으흠 :(

관련 문서를 먼저 읽어보시고..

그러고서 문제가 생겼다면, 문제에 대해서 먼저 생각해 보시고

먼저 문제의 원인이라도 대략 파악해 보시고,

Web이나 책을 찾아 보신 후,

그래도 답이 나오지 않는다면 질문을 하시는게 좋을 듯 합니다.

그래야만 질문 상황도 좀 _명확히_ 정리 될 것 같군요..

두번째 글은 _압권_입니다. :(

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

맹고이의 이미지

지금까지 질문하실 때 마다 늘 이런 이야기가 있었던 걸로 알고 있는데요...

애써 답변해줄려고 하시는 분을 위해서라도

제발 질문 잘하는 방법부터 알아보세요.

저는 답변 안하기로 했으니 상관없지만...

bugiii의 이미지

맹고이 wrote:
지금까지 질문하실 때 마다 늘 이런 이야기가 있었던 걸로 알고 있는데요...

애써 답변해줄려고 하시는 분을 위해서라도

제발 질문 잘하는 방법부터 알아보세요.

저는 답변 안하기로 했으니 상관없지만...

저는 여기서 멈추지 않겠습니다. 끝까지 가볼랍니다...

lkjt님, 질문을 다시 올려주십시오. 부탁드립니다. 저 시간 많습니다.

lkjt의 이미지

2번째글은 테스트 해본 결과였습니다.

제가 혹시나 해서 바꿔어 봣더니 함수로 들어가더군요. (문제가 잇을수도,,)

bugiii의 이미지

lkjt님과 msn 대화로 몇가지 사실을 알았습니다.

현재 중3이시랍니다. 모두 오해 푸시구요...

일부러 그러는게 아니라는 것과 아직 질문을 정확하게 기술하지 못하는 상태인 것 같습니다. 한창 새로운 것을 배우고 공부하고 있는 중이라 좌충우돌하고 있는 중인 것 같습니다.

점점 더 스킬이 붙는다면 소통할 수 있는 범위가 더 넓어지리라 봅니다.

맹고이님, 그래도 답변 좀 해주시죠...

맹고이의 이미지

괜히 답변 안한다는 둥 말을 꺼내서

나쁜 놈 된 듯 한 느낌이... ;;

몰라서 안하는 건 어쩔 수 없습니다... :twisted:

liongo의 이미지

그렇군요 중3이신데..

리눅스환경에서 프로그래밍을 공부하시다니..

나는 중학교3학년때 술,담배 부터배웠는대 ㅡㅡa

물론 답답하시고 코딩하시다가.. 질문을 올리는것도 좋지만..

나중을 생각하면 책을 보시고 기초를 튼튼히 다지는것도 권하는 바입니다.

저도 내공이 딸려서 :)

저도 열띠미 살아야겠습니다.. ㅡㅡa 추월당하고 싶지 않음이란 ..

' 형식이 내용을 규정한다. '

bugiii의 이미지

맹고이 wrote:
괜히 답변 안한다는 둥 말을 꺼내서

나쁜 놈 된 듯 한 느낌이... ;;

몰라서 안하는 건 어쩔 수 없습니다... :twisted:

몰라서 안하시는게 아니잖아요 맹고이님... 귀차니즘이죠? 맞죠 맞죠?

낙엽의 이미지

bugiii 님 아이콘(? - 그림을 뭐라고 하죠?)이 바뀌었네요? ^^;;

bugiii의 이미지

아.. 그거... 저희 팀이 만든 게임의 메인 케릭터 얼굴입니다... 좀 멋있지 않나요? 꽤 유명한 일러스터가 원화 제작한거라서 자부심이 좀 있습니다.

맹고이의 이미지

bugiii님, 저를 너무 과대평가 하셨습니다. -_-;

제 잡담은 여기까지! :wink:

bugiii의 이미지

맹고이 wrote:
bugiii님, 저를 너무 과대평가 하셨습니다. -_-;

잡담은 여기까지만! :wink:

잡담이라도 많이해서 빨리 승급하려구요... 아웅... -_-; (맹고이님 글을 주욱 봐온 저로서는 결코 과대평가가 아닌 듯...)

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.