[fpc-devel] volatile variables

Nikolai Zhubr n-a-zhubr at yandex.ru
Wed Jun 29 15:17:47 CEST 2011


29.06.2011 15:28, Hans-Peter Diettrich:
>>> But if so, which variables (class fields...) can ever be treated as
>>> non-volatile, when they can be used from threads other than the main
>>> thread?
>>
>> Without explicit synchronisation? Actually, none.
>
> Do you understand the implication of your answer?
>
> When it's up to every coder, to insert explicit synchronization whenever
> required, how to determine the places where explicit code is required?

All places where any non-readonly data could be accessed by 2 or more 
threads should be protected. Thats it.
Main thread is no special in this regard.

In order to reduce potential collisions, different critical section 
objects (mutexes) can be used to protect different (think unrelated) 
blocks of data in more fine-grained way.

Nikolai

>
> Aren't we then in the unpleasant situation, that *every* expression can
> be evaluated using unsynchronized values, unless the compiler uses
> synchronized read instructions to obtain *every* value [except from stack]?
>
> DoDi
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
>




More information about the fpc-devel mailing list