programing

C 라이브러리는 GNU/Linux용 C11 스레드를 구현하고 있습니까?

sourcetip 2022. 8. 28. 12:29
반응형

C 라이브러리는 GNU/Linux용 C11 스레드를 구현하고 있습니까?

C11과 C11의 스레드에 대해서는 많은 질문이 있었습니다만, 그 어디에서도 명확한 답을 찾을 수 없었습니다.

C 라이브러리는 GNU/Linux에서 사용할 수 있는 C11 스레딩 인터페이스를 구현하고 있습니까?예를 들어 "옵션"을 제공합니다.<threads.h>스레드 서포트 라이브러리는thrd_create()페이지 376에 가까운 C11 표준에서.

이상적으로는 공통/일반/멀티 아키텍처(GNU/Linux, x86_64, portable-ish 등)에 대해 공통, 오픈 소스 또는 무료 라이브러리를 찾고 싶습니다.

보다 유용하고 관련성이 높은 SO 링크:

  • 이것저것glibc;
  • 기준에 대해 말하는 이 사람;
  • 관한 이번 일clang;
  • 이것은 일반적인 C11에 관한 것이고, 다른 하나는 Windows 및 기타 플랫폼에 관한 것입니다.
  • C++11 스레드에 더 관심이 있지만, 저는 C11에만 관심이 있습니다.

라이브러리의 일부 비스타 옵션:

  • glibc 라이브러리는 없습니다.2012년 이후 해결되지 않은 버그가 있습니다.GSoC 제안이 있었지만 받아들여지지 않은 것 같습니다.
  • LLVM/Clang 프로젝트에는 C 라이브러리가 없습니다.
  • 모슬 라이브러리 하지 않습니다. --지금은 그렇다!아래 편집을 참조하여 답변하십시오.
  • Newlib 라이브러리는 스레드화(docs)를 지원하지만 사용하지 않음pthread스레드도 C11 스레드도 없습니다.
  • uClibc는 그렇지 않다.
  • 이 비교 차트는 의심스럽다(예를 들어 C11 스레드 로컬 스토리지를 지원하는 증거가 Musl 소스에는 없다).
  • BSD에 대한 다양한 게시물,
  • Pelles: 닫혀 있고 Windows 전용으로 표시됩니다.

POSIX 스레드(많은 훌륭한 옵션), Windows, IDE, C++11에는 관심이 없습니다(GNU가libstdc++ LLVM » LLVM/Clanglibc++C++11을 std::thread 을 사용해요.-pthread)

감사합니다!


(re-)편집: 질문이 다시 열렸으므로 정리하기 위해 답변할 내용을 마이그레이션했습니다.

Musl이 C11 스레드를 구현(2014년 9월~이슈)했습니다!

최근 2014년 7월-Sep 메일링 리스트의 투고와 그 리스트에 기재된 기타 대화에 따르면 현재(2014-09-07년 현재) Musl 라이브러리는 비교표이지만 C11 스레드인터페이스를 구현하고 있는 것으로 보입니다.이 글에서는 이를 반영하고 있지 않습니다.

이 질문이 다시 열렸기 때문에 이 내용을 올바른 답변으로 옮겼습니다.

마지막으로 GNU LIBC 2.28은 C11 ISO 스레드를 지원합니다.

Archlinux, Gentoo 및 Suse Tumbleweed는 빠르게 지원할 것으로 예상됩니다.올해 말 Fedora와 Ubuntu 및 기타 2019년 이후.

https://github.com/jtsiomb/c11threads은 단일 헤더에 포함된 "POSIX 스레드 위의 C11 sleads.h 구현"입니다.

음, GCC 4.9.0은 실제로 C11 표준을 상당히 지원하는 것 같습니다(적어도 2014년 6월 말경에 웹 문서가 수정된 이후).

https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Standards.html 에서

C11로 알려진 C 표준의 네 번째 버전은 2011년에 ISO/IEC 9899:2011로 발행되었다. GCC는 -std=c11 또는 -std=iso9899:2011을 사용하여 이 표준을 실질적으로 완벽하게 지원하고 있다. (개발 중에 이 표준 버전의 초안은 C1X로 지칭되었다.)

그리고 https://gcc.gnu.org/gcc-4.9/changes.html에서

ISO C11 atomics(_Atomic 타입 지정자 및 한정자 및 헤더)가 지원되게 되었습니다.ISO C11 범용 선택(_Generic 키워드)이 지원되게 되었습니다.ISO C11 스레드 로컬스토리지(_Thread_local, GNU C__thread와 유사)가 지원되게 되었습니다.ISO C11 지원은 현재 ISO C99 지원과 동일한 수준의 완전성을 갖추고 있습니다.대부분 완전한 모듈로 버그, 확장 식별자(-fextended-identifier를 사용하는 코너 케이스 제외), 부동소수점 문제(주로 Annex F 및 G의 옵션 C99 기능과 완전히 관련되지는 않음), 및 옵션 Annex K(Bounds-che)입니다.CKING 인터페이스) 및 L(분석 가능성)이 있습니다.새로운 C 확장 __auto_type은 GNU C에서 C++11 auto 기능의 서브셋을 제공합니다.

그것으로부터, 페달이 금속에 부딪혔을 때 이 모든 것이 무엇을 의미하는지 알 수 없다.환경을 최신 GCC 4.9.0 릴리스 및 몇 가지 간단한 드라이버 프로그램으로 업그레이드하면 구현의 양과 양을 확인할 수 있습니다.

도움이 됐으면 좋겠다.

FreeBSD는 다음을 제공합니다.threads.hFreeB 이후SD 10.0 프로그램을 libstdsthreads에 링크해야 합니다.

PDCLib(Public Domain C 표준 라이브러리)에는 threads.h에 대한 AFAICT의 완전한 지원이 포함되어 있으며 pthreads에 대한 래퍼는 아닙니다.

FreeBSD는 posix 스레드를 감싸고 있는 것 같습니다.FreeB는 이쪽에서 보실 수 있습니다.SD c11 스레드사이그윈에서 이걸 쓸 수 있었어요아직까지는 문제없지만 아직 그렇게 많이 써본 적은 없어요.

언급URL : https://stackoverflow.com/questions/24557728/does-any-c-library-implement-c11-threads-for-gnu-linux

반응형