thank you all for the great answers. now I know when I should use "RWMutex" instead of "Mutex". ;)
2020년 12월 21일 월요일 오전 1시 44분 1초 UTC+9에 [email protected]님이 작성: > Code using a simple sync.Mutex is also simpler, since you only have one > way to lock and unlock and you don't have to think about lock type when > writing code. In my opinion, use sync.Mutex, and if it proves to be > inefficient, start investigating alternatives. In most cases, your simple > code will work well enough. It's much more important to keep your critical > sections small and quick than tweaking mutex behavior. > > As others have said, RWMutex is great for cache-like things, but could > actually work poorly in other access patterns. > > On Sun, Dec 20, 2020 at 4:16 AM Robert Engels <[email protected]> > wrote: > >> A cache almost always uses a RW mutex or a lock free technique like copy >> on write/CAS to avoid contention. >> >> A simple mutex is fine for less performance critical code with guaranteed >> exclusive/sequential access needs. Many transaction modes are implemented >> with a simple lock/mutex. >> >> On Dec 20, 2020, at 6:59 AM, 'Axel Wagner' via golang-nuts < >> [email protected]> wrote: >> >> >> Unless I specifically know that a variable will be written rarely and >> read often, I tend to use `Mutex`. I'm too worried that the preferential >> treatment of write-locks in an `RWMutex` leads to surprising >> contention-issues if there isn't an overwhelming relationship between their >> frequencies. I also assume - given that it has the more complicated >> semantics - that a `Mutex` is generally cheaper than an `RWMutex`, all >> things being equal. >> >> So I tend to handle it the exact opposite of what you suggest - unless I >> have a specific reason to use `RWMutex`, I default to `Mutex`. >> >> On Sun, Dec 20, 2020 at 9:44 AM 김용빈 <[email protected]> wrote: >> >>> we usually both read and write for a value. not only read, nor write. >>> >>> with that, I feel RWMutex is always right choice. >>> >>> when should I use Mutex instead of RWMutex? >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/f597de36-b296-4f59-b756-adb1248387f5n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/golang-nuts/f597de36-b296-4f59-b756-adb1248387f5n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/CAEkBMfEvPFgq-cQ41Bi%3D4OtaNait-k-2iXG3yWTb8Yj%2BjHDM3Q%40mail.gmail.com >> >> <https://groups.google.com/d/msgid/golang-nuts/CAEkBMfEvPFgq-cQ41Bi%3D4OtaNait-k-2iXG3yWTb8Yj%2BjHDM3Q%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/2A9FF454-BD0C-4594-B3E9-FD1364077689%40ix.netcom.com >> >> <https://groups.google.com/d/msgid/golang-nuts/2A9FF454-BD0C-4594-B3E9-FD1364077689%40ix.netcom.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/3b23844c-9c1a-4197-9fca-1f520f9cd94fn%40googlegroups.com.
