複数のmutexが必要な状況を考えてみた。
// 排他的にアクセスするリソース class exclusive_resource { public : std::vector<int> v ; private : std::mutex m ; public : void lock() { m.lock() ; } void try_lock() { m.try_lock() ; } void unlock() { m.unlock() ; } } ; exclusive_resource res1, res2 ; void thread1() {// res1のみを操作 std::lock_guard< exclusive_resource > guard( res1 ) ; res1.v.push_back(0) ; } void thread2() {// res2のみを操作 std::lock_guard< exclusive_resource > guard( res2 ) ; res2.v.push_back(0) ; } void thread3() {// res1, res2両方を操作 std::lock( res1, res2 ) ; // デッドロックを回避するためstd::lockを使用すること // res1, res2両方を操作、実際には途中のreturnや例外に気をつけること res1.unlock() ; res2.unlock() ; } void thread4() {// thread3と同じく、res1, res2の両方を操作、thread3とは異なる処理 std::lock( res1, res2 ) ; // デッドロックを回避するためstd::lockを使用すること // res1, res2両方を操作、実際には途中のreturnや例外に気をつけること res1.unlock() ; res2.unlock() ; }
今、異なるスレッド間で操作したいオブジェクトが複数あるとする。しかし、常に全オブジェクトを操作する必要はないものとする。とすれば、この複数のオブジェクトを、単一のmutexで排他的にアクセスするのは、非効率的である。したがって、アクセスしたい単位ごとに、別々のmutexを用意するのは当然である。
しかしまた、ある状況では、複数の単位に、同時にアクセスしたい場合もあるとする。この場合、複数のmutexをlockしなければならない。しかし、普通に一つづつlockしたのでは、デッドロックに陥る可能性がある。このため、デッドロックを避けるように気をつけつつロックしなければならない。
std::lockは、lock(), try_lock(), unlock()を組み合わせた一連の呼び出しにより、デッドロックに陥らない方法で、すべてのLockable要求を満たす型のオブジェクトをロックしてくれる。
まとめとしては、複数のmutexを同時にlockする際には、デッドロックを避けるために、std::lockを使うべきである。
178 comments:
nice online tutor
nice online tutor
nice online tutor
nice online tutor
nice online tutor
nice online tutor
nice online tutor
Very Niceonline tutoring for high school students
Very Niceonline tutoring sites for computer science
Very Niceengineering tutor online
Very Niceengineering tutor online
Very Nicebe an online english tutor
Very Niceonline coding tutor
Very Niceonline english language tutor
Very Niceonline english language tutor
very nice paid online tutoring
Very Nicecollege algebra tutor online
very nice best online tutoring sites
very nice best online tutoring sites
very nice math homework help online
very nice math homework help online
very nice precalculus tutoring online
Very Nicebest ai courses online
Very Nicebest ai courses online
Very Nicebest online coaching for csir net chemical science
Very Nicejavascript online classes
Very Nicesara's cooking class
Very Niceonline algebra course
Very Niceblack desert mobile classes
Very Niceelder scrolls online best class
Very Nicebest machine learning course online
Very Nicesara's cooking class
Very Nicesara's cooking class
Very Nicejava online course
Very Nicebest machine learning course online
Very Niceblack desert online classes
very nice online tutoring services
very nice online tutoring sites
very nice nettutor
Very Nicesara's cooking class
Very Nicejava courses near me
Very Niceelder scrolls online classes
very nice online tutoring sites
Very Niceorganic chemistry ii online
Very Nicedungeon fighter online best class
Very Nicedungeon fighter online best class
very nice precalculus tutoring online
Very Nicejavascript online classes
Very Nicelive math tutor
Very Niceedx ap chemistry
Very Nicefinancial accounting online course harvard
very nice online chemistry tutor
Very Niceonline tutor for mechanical engineering
Very Nicetissnet online coaching
Very Nicebest machine learning course coursera
Very Nicestanford free machine learning course
Very Nicebasic accounting course
Very Niceselenium online training
very nice quran tutor at home
Very Niceblack desert online classes
very nice live homework help
very nice tutor online from home
very nice precalculus tutoring online
Very Nicejava online classes
Very Nicebasic accounting course
very nice quran tutor at home
very nice live homework help
very nice tutor online from home
Very Niceselenium online training
very nice precalculus tutoring online
Very Nicejava online classes
Very Nicesql training online
Very Nicewarhammer online age of reckoning classes
Very Niceonline accounting classes for cpa
Very Niceonline accounting classes for cpa
Very Niceblack desert classes
Very Nicebasic maths courses for adults
online tutoring
online tutoring
online tutoring
online tutoring
online tutoring
online tutoring
online tutoring
online tutoring
online tutoring
Very Niceorganic chemistry ii online
online tutoring
Very Nicebasic maths courses for adults
Very Niceonline tally course
Very Niceprinciples of accounting 1 online course
Very Nicefree level 1 maths courses online
Very Nicefree online coaching for ugc net in hindi
Very Nicesql online course
very nice online english tutor
Very Nicedatabase administrator courses online free
Very Niceoracle dba course online
Very Nicecabal force blader
Very Nicebest machine learning course coursera
Very Niceblack desert ps4 classes
very nice online tutoring sites
very nice nettutor
Very Niceonline math classes
Very Niceblack desert best class
very nice gmat tutor
Very Niceblack desert online classes
Very Nicebookkeeping courses near me
very nice online math tutor
Very Nicecsir net online coaching
Very Nicestanford online courses machine learning
very nice paid online tutoring
Very Nicebasic accounting course online
Very Nicenational 5 maths online course
Very Nicehuman biology course online
Very Nicebasic bookkeeping course
very nice quran tutor at home
very nice live homework help
very nice tutor online from home
very nice paid online tutoring
Very Nicejava online classes
Very Nicewarhammer online age of reckoning classes
Very Nicecabal force blader
Very Niceedx ap chemistry
Very Nicefinancial accounting online course harvard
Very Nicebasic maths courses for adults
Very Niceandroid development course free online
Very Niceandroid development course free online
Very Niceblack desert ps4 launch classes
Very Niceugc net online coaching commerce
Very Nicebest machine learning course coursera
Very Niceudacity free courses web development
Very Niceneverwinter online druid
Very Niceonline biology courses
very nice online tutoring sites
Very Niceonline math classes
Very Niceaccounting classes online
Very Niceblack desert mobile classes
Very Niceelder scrolls online necromancer
Very Niceselenium online training
Very Nicebookkeeping courses near me
Very Niceselenium online training
Very Nicewarhammer online age of reckoning classes
Very Nicems word online course
Very Niceedx ap chemistry
Very Niceorganic chemistry summer course online
Very Nicetissnet online coaching
Very Nicelatale new class
Very Nicesword art online integral factor classes
Very Niceblack desert ps4 launch classes
Very Niceneverwinter online druid
Very Nicebest machine learning course coursera
Very Niceblack desert classes
Very Niceblack desert online classes
Very Niceblack desert ps4 classes
very nice nettutor
Very Nicestanford free machine learning course
Very Nicetissnet online coaching
Very Nicemicrosoft access classes online
Very Nicebest machine learning course coursera
very nice paid online tutoring
Very Niceoracle online course
Very Niceml courses online
Very Niceonline chemistry classes
very nice quran tutor at home
Very Niceonline chemistry courses community college
very nice online tutoring for college students
very nice tutor online from home
Very Nicejava online classes
Very Niceugc net online coaching
very nice online math tutor
Very Nicewarhammer age of reckoning classes
very nice online math tutor
Very Niceblack desert ps4 classes
Very Nicebookkeeping course online
Very Niceaccounting courses near me
very nice online tutoring sites
very nice nettutor
Very Niceaccounting classes online
Post a Comment