CharSyam
Tag | Location | Media | Guestbook | Admin

2009/03/13 00:38 2009/03/13 00:38
reentrant 와 thread-safe 는 다른 말이다

멀티 플랫폼을 대상으로 된 라이브러리를 MAC 용으로 포팅을 하다보니 신기한 문제를 발견했다.

 

MAC에서는 _r 계열 함수가 제대로 없는 것이다. _r 계열 함수는 reentrant 즉, 재진입 가능 함수를 의미한다.

 

착각하기 쉬운것이, thread-safe 하면 reentrant 하다고 생각하기가 쉬운데, 이 두개는 서로 다른 개념이다.

 

 즉 Thread-Safe 라는 것은 A,B 두개의 스레드가 strtok 같은 함수를 이용한다고 할 때,  각각의 스레드에서는 strtok가 호출될 때 문제가 없으면 된다. 보통 이럴 경우 내부적으로 해당 데이터를 TLS 에 넣어두면 thread-safe 하다고 볼 수 있다. 그런데 reentrant 할려고 한다면 문제가 발생할 수 있다.

 

 같은 스레드 안에서 strtok 가 두 번 불려진다면? 과연 다음과 같은 코드는 기대한 결과가 나올것인가?

 

  1. strtok(A, 어쩌구);
  2. strtok(B, 어쩌구);
  3. strtok( NULL, 어쩌구 );
  4. strtok( NULL, 어쩌구 );

 물론 위와 같은 형태로 바로 작성할 사람은 별로 없겠지만, Message 방식일 경우 가끔씩

위와 같은 문제가 발생할 수 가 있다. 그래서 strtok_r 같은 함수는 해당 결과를 가져올 수 있는 파라매터가 하나 더 있는 것이다. 즉, 몇번이고 strtok_r 이 불려지더라도, 원하던 결과로 동작할 수 있다.

 

 흐음, 그런데 MAC에는 왜 그 함수가 없었을 까? 함수명이 생각이 안난다. -_-

Track this back : http://liso.or.kr/~charsyam/charsyam/tc/CharSyam/trackback/14

[로그인][오픈아이디란?]
name    password    homepage
 hidden


BLOG main image
CharSyam
 Notice
 Category
전체 (90)
(19)
(3)
프로그래밍 (61)
게임 (1)
Server Setting (5)
대학원 (1)
 TAGS
Window Mobile 6 TearUp WindowsMobile 구글테스트 Interface DQ4 도전 임베디드 OS 만들기 DTM_SETIMAGE 이미지로드 googletest 지식인의 책임 Abstract Factory 생각의 좌표 문제 프로젝트 공짜경제학 SetUp 윈도우즈 모바일 XML VFS 주식 Free CAB 경제학 3.0 일자리 창출 Head First Software Development 삽질운하 죽음의 행진 소프트웨어 아키텍처 문서화 세월이 젊음에게 회계 부정
 Calendar
«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 Recent Entries
YES24 총알 배송 광고
CMake – CMakeLis...
Autotools 관련 좋은 링...
고수와 전문가의 차이
Zookeeper 설치 방법
 Recent Comments
오~ 이 책도 땡기는군요...
ohyecloudy - 05/25
항상 정리해야 되는데,...
CharSyam - 05/13
잘 정리하셨네요. ^^
고감자 - 05/12
네, 저도 동감합니다....
CharSyam - 2009
http://www.thisisgame....
ParkPD - 2009
 Recent Trackbacks
Discount patio furniture.
Discount furniture.
Furniture competition.
Furniture design compe...
Acomplia ribona.
Acomplia.
Premarin.
Premarin vaginal cream.
스크럼과 XP
The note of Legendre
 Archive
2010/07
2010/06
2010/05
2010/04
2010/03
 Link Site
 Visitor Statistics
Total : 38342
Today : 44
Yesterday : 73
rss
Powered by Tistory & Designed by webnoon.net