GCC 원자 내장에 추가 "일반"버전이 필요한 이유는 무엇입니까?

PSkocik

https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html 에 따르면 다음이 있습니다 .

type __atomic_load_n (type *ptr, int memorder)

및 ( "일반") :

void __atomic_load (type *ptr, type *ret, int memorder)

그때

void __atomic_store_n (type *ptr, type val, int memorder)

및 ( "일반")

void __atomic_store (type *ptr, type *val, int memorder)

기타

후자의 버전에 대한 일반 사항 (이전 버전에 대한 일반 사항이 아님)은 무엇이고 왜 필요한가요?

존 Szakmeister

답은 6.55 섹션 의 GCC 매뉴얼에 있습니다 .

'__atomic'내장 기능은 길이가 1, 2, 4 또는 8 바이트 인 정수 스칼라 또는 포인터 유형과 함께 사용할 수 있습니다. 아키텍처에서 '__int128'(__ int128 참조)을 지원하는 경우 16 바이트 정수 유형도 허용됩니다.

네 가지 비 산술 함수 (로드, 저장, 교환 및 compare_exchange) 모두 일반 버전도 있습니다. 이 일반 버전은 모든 데이터 유형에서 작동합니다. 특정 데이터 유형 크기로 가능하면 잠금없는 내장 함수를 사용합니다. 그렇지 않으면 외부 호출이 런타임에 해결되어야합니다. 이 외부 호출은 가리키는 객체의 크기를 나타내는 첫 번째 매개 변수로 삽입 된 'size_t'매개 변수가 추가 된 동일한 형식입니다. 모든 개체는 동일한 크기 여야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

cshtml 확장자가 필요한 이유는 무엇입니까?

분류에서Dev

gcc의 링커 옵션에 '-pthread'가 필요한 이유에 대한 자세한 설명은 무엇입니까?

분류에서Dev

일반 멤버에 대해 선언 순서가 중요한 이유는 무엇입니까?

분류에서Dev

내 예제에서이 일반 함수가 지원되지 않는 이유는 무엇입니까?

분류에서Dev

이 문자가 matter.js에 필요한 이유는 무엇입니까?

분류에서Dev

xchg () 전에 pushcli ()가 필요한 이유는 무엇입니까?

분류에서Dev

GCC에서 멤버 함수를 호출하기 전에 new 주위에 대괄호가 필요한 이유는 무엇입니까?

분류에서Dev

tar 및 gzip 파일에 일반적으로 파일 확장자가있는 이유는 무엇입니까?

분류에서Dev

내 일반 목록의 각 요소가 동일한 이유는 무엇입니까? (VB)

분류에서Dev

내 일반 목록의 각 요소가 동일한 이유는 무엇입니까? (VB)

분류에서Dev

커널 4.4.0-135에 일반적인 apt 업그레이드 대신 명시적인 업그레이드가 필요한 이유는 무엇입니까?

분류에서Dev

MinGW GCC가 일반 GCC와 달리`-pedantic-errors`가있는 경우에도 누락 된 반환 유형을 허용하는 이유는 무엇입니까?

분류에서Dev

SKProductsRequest에 제품 식별자가 필요한 이유는 무엇입니까?

분류에서Dev

ssh to github에 git 사용자가 필요한 이유는 무엇입니까?

분류에서Dev

소멸자 정의에 괄호가 필요한 이유는 무엇입니까?

분류에서Dev

gcc의 is_nothrow_constructible 구현에 static_cast가 필요한 이유는 무엇입니까?

분류에서Dev

일반 사용자가 컴퓨터의 전원을 끌 수있는 이유는 무엇입니까?

분류에서Dev

Java는 일반 유형 및 메소드를 지원합니다. 일반 필드가 아닌 이유는 무엇입니까?

분류에서Dev

함수로 전달되는 2 차원 배열에 크기가 필요한 이유는 무엇입니까?

분류에서Dev

Java가 원시 목록을 일반 목록 생성자에 전달할 수있는 이유는 무엇입니까?

분류에서Dev

UIButton.addTarget이 작업을 나타내는 문자열 뒤에 ":"가 필요한 이유는 무엇입니까?

분류에서Dev

멤버 필드에 대한이 일반 유형 정보가 Java에서 지워지지 않는 이유는 무엇입니까?

분류에서Dev

내 일반 클래스 생성자가 요청 된 인터페이스를 구현하는 객체를 거부하는 이유는 무엇입니까?

분류에서Dev

루프 장치가 필요한 이유는 무엇입니까?

분류에서Dev

이 기본 반응 응용 프로그램에서 사용자 지정 구성 요소 'TextInput'을 사용하여 일반 '입력'필드가 입력하지 않는 경우에도 내용을 입력 할 수있는 이유는 무엇입니까?

분류에서Dev

std :: vector에 요소에 대한 이동 생성자가 필요한 이유는 무엇입니까?

분류에서Dev

내가`setuid`가 있고 사용자가 그룹의 구성원 인 경우 Upstart에`setgid`가 필요한 이유는 무엇입니까?

분류에서Dev

AnimationController에 vsync가 필요한 이유는 무엇입니까?

분류에서Dev

BinaryHeap에 Ord가 필요한 이유는 무엇입니까?

Related 관련 기사

  1. 1

    cshtml 확장자가 필요한 이유는 무엇입니까?

  2. 2

    gcc의 링커 옵션에 '-pthread'가 필요한 이유에 대한 자세한 설명은 무엇입니까?

  3. 3

    일반 멤버에 대해 선언 순서가 중요한 이유는 무엇입니까?

  4. 4

    내 예제에서이 일반 함수가 지원되지 않는 이유는 무엇입니까?

  5. 5

    이 문자가 matter.js에 필요한 이유는 무엇입니까?

  6. 6

    xchg () 전에 pushcli ()가 필요한 이유는 무엇입니까?

  7. 7

    GCC에서 멤버 함수를 호출하기 전에 new 주위에 대괄호가 필요한 이유는 무엇입니까?

  8. 8

    tar 및 gzip 파일에 일반적으로 파일 확장자가있는 이유는 무엇입니까?

  9. 9

    내 일반 목록의 각 요소가 동일한 이유는 무엇입니까? (VB)

  10. 10

    내 일반 목록의 각 요소가 동일한 이유는 무엇입니까? (VB)

  11. 11

    커널 4.4.0-135에 일반적인 apt 업그레이드 대신 명시적인 업그레이드가 필요한 이유는 무엇입니까?

  12. 12

    MinGW GCC가 일반 GCC와 달리`-pedantic-errors`가있는 경우에도 누락 된 반환 유형을 허용하는 이유는 무엇입니까?

  13. 13

    SKProductsRequest에 제품 식별자가 필요한 이유는 무엇입니까?

  14. 14

    ssh to github에 git 사용자가 필요한 이유는 무엇입니까?

  15. 15

    소멸자 정의에 괄호가 필요한 이유는 무엇입니까?

  16. 16

    gcc의 is_nothrow_constructible 구현에 static_cast가 필요한 이유는 무엇입니까?

  17. 17

    일반 사용자가 컴퓨터의 전원을 끌 수있는 이유는 무엇입니까?

  18. 18

    Java는 일반 유형 및 메소드를 지원합니다. 일반 필드가 아닌 이유는 무엇입니까?

  19. 19

    함수로 전달되는 2 차원 배열에 크기가 필요한 이유는 무엇입니까?

  20. 20

    Java가 원시 목록을 일반 목록 생성자에 전달할 수있는 이유는 무엇입니까?

  21. 21

    UIButton.addTarget이 작업을 나타내는 문자열 뒤에 ":"가 필요한 이유는 무엇입니까?

  22. 22

    멤버 필드에 대한이 일반 유형 정보가 Java에서 지워지지 않는 이유는 무엇입니까?

  23. 23

    내 일반 클래스 생성자가 요청 된 인터페이스를 구현하는 객체를 거부하는 이유는 무엇입니까?

  24. 24

    루프 장치가 필요한 이유는 무엇입니까?

  25. 25

    이 기본 반응 응용 프로그램에서 사용자 지정 구성 요소 'TextInput'을 사용하여 일반 '입력'필드가 입력하지 않는 경우에도 내용을 입력 할 수있는 이유는 무엇입니까?

  26. 26

    std :: vector에 요소에 대한 이동 생성자가 필요한 이유는 무엇입니까?

  27. 27

    내가`setuid`가 있고 사용자가 그룹의 구성원 인 경우 Upstart에`setgid`가 필요한 이유는 무엇입니까?

  28. 28

    AnimationController에 vsync가 필요한 이유는 무엇입니까?

  29. 29

    BinaryHeap에 Ord가 필요한 이유는 무엇입니까?

뜨겁다태그

보관