Skip to content
  • Ed Schouten's avatar
    e0cf3b9a
    Make support for thread-unsafe C functions optional. · e0cf3b9a
    Ed Schouten authored
    One of the aspects of CloudABI is that it aims to help you write code
    that is thread-safe out of the box. This is very important if you want
    to write libraries that are easy to reuse. For CloudABI we decided to
    not provide the thread-unsafe functions. So far this is working out
    pretty well, as thread-unsafety issues are detected really early on.
    
    The following patch adds a knob to libc++,
    _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS, that can be set to disable
    thread-unsafe functions that can easily be avoided in practice. The
    following functions are not thread-safe:
    
    - <clocale>: locale handles should be preferred over setlocale().
    - <cstdlib>: mbrlen(), mbrtowc() and wcrtomb() should be preferred over
      their non-restartable counterparts.
    - <ctime>: asctime(), ctime(), gmtime() and localtime() are not
      thread-safe. The first two are also deprecated by POSIX.
    
    Differential Revision:	http://reviews.llvm.org/D8703
    Reviewed by:	marshall
    
    llvm-svn: 240527
    e0cf3b9a
    Make support for thread-unsafe C functions optional.
    Ed Schouten authored
    One of the aspects of CloudABI is that it aims to help you write code
    that is thread-safe out of the box. This is very important if you want
    to write libraries that are easy to reuse. For CloudABI we decided to
    not provide the thread-unsafe functions. So far this is working out
    pretty well, as thread-unsafety issues are detected really early on.
    
    The following patch adds a knob to libc++,
    _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS, that can be set to disable
    thread-unsafe functions that can easily be avoided in practice. The
    following functions are not thread-safe:
    
    - <clocale>: locale handles should be preferred over setlocale().
    - <cstdlib>: mbrlen(), mbrtowc() and wcrtomb() should be preferred over
      their non-restartable counterparts.
    - <ctime>: asctime(), ctime(), gmtime() and localtime() are not
      thread-safe. The first two are also deprecated by POSIX.
    
    Differential Revision:	http://reviews.llvm.org/D8703
    Reviewed by:	marshall
    
    llvm-svn: 240527
Loading