쓰레드에서 stl을 쓸때??
글쓴이: MackTheKnife / 작성시간: 화, 2004/01/13 - 4:58오후
g++ 2.96이고 linux (커널 2.4)에서 프로그래밍중인데
thread생성후 thread함수안에서 vector값을 가져오는 부분에서 값을 가져올수가 없읍니다.
컴파일시 -D_REENTRANT -D_PTHREADS를 줘서 컴파일 했구여
main() { thread생성 Pthread_join()으로 기다림 } thread함수 { vector<string> vtString; vtString.push_back(string("1234")); vtString.push_back(string("4321")); vector<string>::iterator ptr; ptr=vtString.begin(); while(ptr && ptr!=vtString.end()) <--여기에서 블락된채로 있음니다. { cout << *ptr++<< endl; } }
Forums:
Re: 쓰레드에서 stl을 쓸때??
while( ptr && ptr != vtString.end() )
요 부분을
while( *ptr && ptr != vtString.end() )
으로 바꾸면 어떨까요?
iterator를 아무 연산자 없이 평가하는 것은 안될 것 같습니다.
---
http://coolengineer.com
Re: 쓰레드에서 stl을 쓸때??
이상하군요... 제 컴에서 해 봤는데 잘 됩니다. (g++ 은 2.96, 커널도 2.4.xx <- 와우리눅스 사용중) 테스트 코드와 컴파일 옵션은 다음과 같습니다.
g++ -D_REENTRANT -D_PTHREADS -o testThread testThread.cxx -lpthread
실행파일 결과는 예상대로(?) 다음과 같습니다.
$ ./testThread
1234
4321
뭔가 다른 이유가 있을 듯 합니다.
댓글 달기