«atomic» 태그된 질문

원자 적 연산은 나눌 수 없습니다. 이 용어는 데이터베이스의 트랜잭션, 다중 스레드 프로그램의 저수준 액세스 및 파일 시스템 작업을 설명하는 데 사용됩니다.


7
원자 / 휘발성 / 동기화의 차이점은 무엇입니까?
원자 / 휘발성 / 동기화는 내부적으로 어떻게 작동합니까? 다음 코드 블록의 차이점은 무엇입니까? 코드 1 private int counter; public int getNextUniqueIndex() { return counter++; } 코드 2 private AtomicInteger counter; public int getNextUniqueIndex() { return counter.getAndIncrement(); } 코드 3 private volatile int counter; public int getNextUniqueIndex() { return counter++; } …

6
프로그래밍에서 "원자"는 무엇을 의미합니까?
유효 Java 책에는 다음과 같이 명시되어 있습니다. 언어 사양은 변수가 유형 long이거나 double[JLS, 17.4.7] 이 아니면 변수를 읽거나 쓰는 것이 원자 성임을 보증합니다. "원자"는 Java 프로그래밍 또는 일반적인 프로그래밍의 맥락에서 무엇을 의미합니까?
276 java  atomic 


3
std :: atomic은 정확히 무엇입니까?
나는 그것이 std::atomic<>원자 적 객체 라는 것을 이해 합니다. 그러나 어느 정도까지 원자? 내 이해에 따르면 작업은 원자가 될 수 있습니다. 물체를 원자로 만드는 것은 정확히 무엇을 의미합니까? 예를 들어 다음 코드를 동시에 실행하는 두 개의 스레드가있는 경우 : a = a + 12; 그렇다면 전체 작업이 add_twelve_to(int)원 자성입니까? 아니면 …

13
num ++가 'int num'의 원자가 될 수 있습니까?
일반적 속 int num, num++(나 ++num), 판독 - 수정 - 기록 동작으로, 인 원자 없다 . 그러나 종종 GCC 와 같은 컴파일러 가 다음 코드를 생성하는 것을 종종 볼 수 있습니다 ( here 시도 ). num++하나의 명령에 해당하는 5 번 라인 이이 경우에 num++ 원자 라고 결론 지을 수 있습니까? …

8
! = 점검 스레드는 안전한가요?
복합 작업 i++은 여러 작업 을 포함하므로 스레드 안전하지 않다는 것을 알고 있습니다. 그러나 참조 자체를 스레드 안전 작동으로 확인합니까? a != a //is this thread-safe 이것을 프로그래밍하고 여러 스레드를 사용하려고했지만 실패하지 않았습니다. 내 컴퓨터에서 레이스를 시뮬레이션 할 수 없었습니다. 편집하다: public class TestThreadSafety { private Object a = new …

5
멀티 스레딩에서 휘발성을 사용해야하는 경우
전역 변수에 액세스하는 두 개의 스레드가있는 경우 많은 자습서에서 컴파일러가 변수를 레지스터에서 캐싱하지 못하도록 변수를 휘발성으로 만들고 올바르게 업데이트되지 않는다고 말합니다. 그러나 공유 변수에 액세스하는 두 개의 스레드는 뮤텍스를 통한 보호를 요구하는 것이 아닙니다. 그러나이 경우 스레드 잠금과 뮤텍스 해제 사이에서 코드는 하나의 스레드 만 변수에 액세스 할 수있는 중요한 …

6
AtomicInteger lazySet 대 set
의 lazySet와 set방법의 차이점은 무엇입니까 AtomicInteger? 문서 에 대해 말을 많이가 없습니다 lazySet: 결국 주어진 값으로 설정됩니다. 저장된 값이 즉시 원하는 값으로 설정되는 것이 아니라 향후 일정 시간에 설정 될 것으로 보입니다. 그러나이 방법의 실제 사용은 무엇입니까? 어떤 예?
116 java  concurrency  atomic 


4
UNIX에서 파일 추가 원자 적입니까?
일반적으로 여러 프로세스에서 UNIX의 파일에 추가 할 때 당연한 것으로 간주 할 수있는 것은 무엇입니까? 데이터가 손실 될 수 있습니까 (한 프로세스가 다른 프로세스의 변경 사항을 덮어 씀)? 데이터가 망가질 수 있습니까? (예를 들어, 각 프로세스는 로그 파일에 추가 할 때마다 한 줄씩 추가합니다. 두 줄이 엉망이 될 수 있습니까?) …

3
원자 운영 비용
원자 적 작업의 비용은 얼마입니까 (비교 및 교체 또는 원자 적 추가 / 감소)? 얼마나 많은 사이클을 소비합니까? SMP 또는 NUMA에서 다른 프로세서를 일시 중지합니까, 아니면 메모리 액세스를 차단합니까? 순서가 잘못된 CPU에서 재정렬 버퍼를 플러시합니까? 캐시에는 어떤 영향이 있습니까? 저는 최신 인기 CPU 인 x86, x86_64, PowerPC, SPARC, Itanium에 관심이 …

5
C ++ 11의 std :: atomic :: compare_exchange_weak () 이해
bool compare_exchange_weak (T& expected, T val, ..); compare_exchange_weak()C ++ 11에서 제공되는 비교-교환 프리미티브 중 하나입니다. 객체의 값이 같더라도 false를 반환한다는 점 에서 약 합니다 expected. 이는 일련의 명령어 (x86의 명령어 대신)가이를 구현하는 데 사용되는 일부 플랫폼의 스퓨리어스 오류 때문입니다. 이러한 플랫폼에서 컨텍스트 전환, 다른 스레드에 의한 동일한 주소 (또는 캐시 …

10
Django : 데이터베이스 항목의 동시 수정으로부터 어떻게 보호 할 수 있습니까?
두 명 이상의 사용자가 동일한 데이터베이스 항목을 동시에 수정하지 못하도록 보호하는 방법이 있습니까? 두 번째 커밋 / 저장 작업을 수행하는 사용자에게 오류 메시지를 표시하는 것은 허용되지만 데이터를 자동으로 덮어 쓰면 안됩니다. 사용자가 "뒤로"버튼을 사용하거나 단순히 브라우저를 닫고 잠금을 영원히 남겨 둘 수 있으므로 항목을 잠그는 것은 옵션이 아니라고 생각합니다.

4
C ++ 11에서 StoreLoad 장벽을 달성하는 방법?
고전적인 문제의 변형을 해결하는 휴대용 코드 (Intel, ARM, PowerPC ...)를 작성하고 싶습니다. Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } 하는 목표는 모두 스레드가 수행되는 상황을 방지하는 것입니다something . (아무것도 실행되지 않으면 괜찮습니다. 이것은 한 번만 실행되는 메커니즘이 아닙니다.) 아래의 내 추론에 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.