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.

Reply via email to