2010-01-24 5 views
22

매우 간단한 질문입니다 (중복 될 수는 있지만). 찾지 못했습니다.Linux의 InterlockedIncrement와 동일/gcc

Win32 API는 InterlockedIncrement과 같은 매우 유용한 일련의 원자 연산 (x86 형식 코드로 lock add)을 제공합니다. 또한 InterlockedCompareExchangelock cmpxchg에 매핑됩니다.

하지만 Linux에서 gcc를 사용하여 작업하고 싶습니다. 필자는 64 비트로 작업하기 때문에 인라인 어셈블리를 사용할 수 없습니다. gcc 내장 함수가 있습니까?

+0

당신은 "연동 증가 GCC"또는 "연동 증가 리눅스"를 검색 할 수 있습니다 (http://stackoverflow.com/questions/149710/interlocked-equivalent-on-linux) –

답변

29
+0

감사합니다! '__sync_fetch_and_add'가 그 중 하나였습니다. – minjang

+15

실제로 InterlockedIncrement()에 해당하는 것은 __sync_add_and_fetch()입니다. __sync_fetch_and_add()는 새 값을 반환하는 InterlockedIncrement()와 달리 이전 값을 반환합니다. – noamtm