Java 라이브러리의 C++ 포트에서 작업 중입니다. 문제 중 하나는 Java의 AtomicLongArray에 해당하는 것을 찾을 수 없다는 것입니다. C++ 11에서 이미 동등한 것이 있거나 비슷한 기능을 구현하는 방법이 있다면 누구나 알고 있습니까? C++ 11 원자를 보았지만 아무것도 찾을 수 없었습니다. AtomicLongArray위한C++ Java atomiclongarray의 11 equivalent
답변
워드 프로세서 말 :
요소 원자 적으로 갱신 될 수있는 긴 배열. 원자 변수의 특성에 대한 설명은
java.util.concurrent.atomic
패키지 스펙을 참조하십시오.std::atomic<long>
의 간단한 배열처럼 나에게 소리
: 요소 만이 원자입니다
std::array<std::atomic<long>, N> array;
// or, if size is not known at compile time
std::vector<std::atomic<long>> vector(n);
주, 컨테이너 자체는 아니므로, 벡터에 보내고 주변 push_back
가지 마세요 . 에서는
는 [container.requirements.dataraces] 표준 말한다
-2- (17.6.5.9) 구현은 데이터 레이스를 방지 할 필요에도 불구 때 다른 요소에 포함되는 오브젝트의 내용
vector<bool>
을 제외한 동일한 순서가 동시에 수정됩니다.-3- [참고 동시에 실행할 초과 한
x[1] = 5
및*x.begin() = 10
는 데이터 경쟁없이 동시에 수행 될 수 있지만,x[0] = 5
및*x.begin() = 10
는 데이터 레이스 초래할 수있는 크기의 용vector<int> x
. 일반적인 규칙의 예외로vector<bool> y, y[0] = true
은y[1] = true
과 경쟁 할 수 있습니다. -end 참고]
그래서 (악 vector<bool>
제외) 컨테이너는 별도 요소 데이터 레이스없이 갱신 될 수있다. 단일 요소에 대한 업데이트가 안전하도록하려면 원자 유형의 컨테이너 (예 : std::vector<std::atomic<long>>
복사 생성자가 없으므로 마지막으로 원자형 벡터를 가질 수 없습니다. http://stackoverflow.com/questions/12003024/error-with-copy-constructor-assignment-operator-for-a-class-which-has-stdatomi –
@SeanMcCauliff를 참조하십시오. 사실이 아니므로 신고 할 수 있습니다. 'std :: vector
// 다음 프로그램은 gcc 4.7.2와 호환 될 때 500 줄 이상의 오류 메시지를 생성합니다. 이것은 gcc에서 구현되지 않은 기능입니까? #include
- 1. C# Java HashMap equivalent
- 2. ObjectiveC blocks Java equivalent
- 3. php checkdnsrr java equivalent
- 4. java 및 C++ 11 휘발성
- 5. fsockopen equivalent in C#
- 6. fscanf C++ equivalent
- 7. C++ urljoin equivalent
- 8. VB.COM에서 System.exit (1) java, equivalent
- 9. Java 용 KeyStorage .Net equivalent?
- 10. C++ 11
- 11. ushort equivalent
- 12. C++ 11 visual_studio에서 thread_local 키워드 지원 11
- 13. Google go java equivalent of java finalize 메서드
- 14. C++ (11) 나 C++ 11 enable_if 다음과 같은 예를 보았다
- 15. C++ 11 Polyfills
- 16. 스레딩 지원 ++ C++ 11
- 17. 사용 - C++ 11 예를
- 18. clang ++ C++ 11 호출
- 19. C++ 11 기능 검사
- 20. 추정 시간 C++ 11
- 21. C++ 11 "자동"의미
- 22. 표준 : : for_each를, C++ 11
- 23. 순수 기능 C++ (11)
- 24. C++ 11 파일 스트림
- 25. C++ 11 std :: array
- 26. 쓰레기 수거 C++ 11
- 27. C++ 11 : 배열 반환
- 28. 시퀀스 포인트가없는 C++ 11?
- 29. C++ 11 버전
- 30. 는 C++ 11 regex_token_iterator
원자력 어레인지 (atomiclongarray)에 대해 설명하면 잠재적으로 유용한 잠재 고객을 크게 늘릴 수 있습니다. 그렇게하면 C++을 알고 있지만 Java는 아는 사람들로부터 도움을받을 수 있습니다. –