소스 검색

optimize spin lock not to dirty cache line while spinning

Rich Felker 10 년 전
부모
커밋
7b1fb0c526
1개의 변경된 파일1개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      src/thread/pthread_spin_lock.c

+ 1 - 1
src/thread/pthread_spin_lock.c

@@ -2,6 +2,6 @@
 
 int pthread_spin_lock(pthread_spinlock_t *s)
 {
-	while (a_swap(s, 1)) a_spin();
+	while (*(volatile int *)s || a_cas(s, 0, 1)) a_spin();
 	return 0;
 }