Threads Cannot Be Implemented As a Library ACM
Sign up to view full document!
SIGN UP
Threads Cannot Be Implemented As a Library ACM SIGPLAN PLDI ’ 05 SESSION: Threads
Pthreadsが正しく動かないケース4 for(…) { … if(mt) pthread_mutex_lock(…); x=…x… if(mt) pthread_mutex_unlock(…); } ↓コンパイル後のコード r = x; for(…) { if(mt) { x = r; pthread_mutex_lock(…); r = x; } r=…r… if(mt ) { x = r; pthread_mutex_unlock(…); r = x; } } x = r;
Pthreadsのパフォーマンス1 Pthreadsのロックは効率が悪い q 例えば以下のようなコードを考える //Sieve Of Eratosthenes implementation for(my_prime = start; my_prime < 10000; ++my_prime) if(!get(my_prime)) { for(multiple = my_prime; multiple < 10000; multiple += my_prime) if(!get(multiple)) set(multiple); } //getとsetは配列へのアクセス //get(i) は A[i], set(i) はA[i] = true; //Aはbooleanの配列で、素数かどうか判定する際のデータ置き場 n
- Slides: 15