log4j 의 lightweight c 버젼 범용 로깅라이버러리 제작중인데, application 개발자가 꼭 main thread 에서
라이버러리 init 를 호출한다는 보장이 없기 때문에 첫번째 방법을 쓰지 않고 다른 방법이 없는지 궁금했었거든요.
다른 방법이 없다면 아무래도 init 함수를 호출하는것은 main thread라고 가정하고 - 대부분 그렇겠죠 - 거기서 pthread_t 를 저장해놓아야 겠군요.
두번째 방법은 man 을 보니 말씀하신대로 linux-specific 이군요. 리눅스에서만 쓸 경우에는 좋은 방법 같습니다.
gettid 라는게 있었군요.
main() 시작하고,
main() 시작하고, pthread_self()를 불러서 thread id를 저장한 다음, 나중에 필요할 경우, pthread_equal()을 써서 비교하면 main thread인지 아닌지 구별이 가능합니다.
이식성이 없는 방법으로, gettid()와 getpid()의 리턴값이 같으면 main thread인지 아닌지 알 수도 있을 것 같군요.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
답변감사드립니다. lo
답변감사드립니다.
log4j 의 lightweight c 버젼 범용 로깅라이버러리 제작중인데, application 개발자가 꼭 main thread 에서
라이버러리 init 를 호출한다는 보장이 없기 때문에 첫번째 방법을 쓰지 않고 다른 방법이 없는지 궁금했었거든요.
다른 방법이 없다면 아무래도 init 함수를 호출하는것은 main thread라고 가정하고 - 대부분 그렇겠죠 - 거기서 pthread_t 를 저장해놓아야 겠군요.
두번째 방법은 man 을 보니 말씀하신대로 linux-specific 이군요. 리눅스에서만 쓸 경우에는 좋은 방법 같습니다.
gettid 라는게 있었군요.
댓글 달기