Re: A question about QuickQuiz 5.46

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 21 May 2023 07:54:25 +0000, Hao Lee wrote:
> On Fri, May 19, 2023 at 10:27:48PM +0900, Akira Yokosawa wrote:
>> On Fri, 19 May 2023 06:28:47 +0000, Hao Lee wrote:
>>> On Thu, May 18, 2023 at 10:50:51AM +0900, Akira Yokosawa wrote:
>>>> Hi,
>>>>
>>>> On Wed, 17 May 2023 12:01:10 +0000, Hao Lee wrote:
>>>>> Hi, Paul
>>>>>
>>>>> I noticed that QuickQuiz 5.46 is causing confusion due to the fact that
>>>>> balance_count() and flush_local_count() are both located within the
>>>>> slowpath and are called sequentially. As a result, it is impossible for
>>>>> them to compete for the counterandmax thread-local variable.
>>>>
>>>> Right.
>>>> And that's exactly what is mentioned in the answer to the quiz.
>>>>
>>>> I guess it confused you because you didn't expect such an easy one,
>>>> no ? :-)
>>>
>>> In fact I'm confused about the question description.
>>> I believe that this quiz should focus on the concurrency of global
>>> variables, rather than on the concurrency of the atomic variable
>>> `counterandmax`, which is currently the main focus of the description.
>>
>> Hmm, sorry but I'm afraid I don't get your point ...
>>
>> Could you share the question you'd expect to see in place of
>> Quick Quiz 5.46?
> 
> Hi, I don't think this question should exist according to my
> understanding...
> 
> Let's approach this question from a different perspective. The answer
> emphasizes that the gblcnt_mutex prevents concurrency problems. Let's
> assume that neither balance_count() nor flush_local_count() is holding
> the gblcnt_mutex. Would the counterandmax variable encounter concurrency
> problems? I don't think so because counterandmax is an atomic variable
> and is always safe, even without using any locks.

I'm not sure, but you might be missing subtle wording in the quiz part
of Quick Quiz 5.46 (quoted below):

    Given that the atomic_set() primitive does a simple store
    to the specified atomic_t, ...

Here, "simple store" means a normal store which doesn't involve
any atomic operations (at instruction level).

atomic_read() and atomic_set() are for accessing atomic_t variables
without any costly atomic operations.

Which is why Quick Quiz 5.46 has been there for more than a decade.

Perhaps, you might be interested in Quick Quiz B.12 as well.
 
HTH,
        Akira

> 
>>
>>         Thanks, Akira
>>
>>>
>>>>
>>>>         Thanks, Akira
>>>>
>>>>>                                                               Therefore,
>>>>> I believe that this quiz may be referring to the global variables
>>>>> globalcount and globalreserve.
>>>>>
>>>>> Thanks,
>>>>> Hao Lee



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux