On Saturday, February 4, 2017 at 2:51:53 PM UTC+8, Axel Wagner wrote:
>
> On Sat, Feb 4, 2017 at 5:49 AM, T L <tapi...@gmail.com <javascript:>> 
> wrote:
>
>> On Saturday, February 4, 2017 at 11:03:11 AM UTC+8, Matt Harden wrote:
>>>
>>> Never mind; I just realized that a WaitGroup is not necessarily at the 
>>> start of an allocation or global variable.
>>>
>>
>> Not very get it.
>> Do you mean WaitGroup will be embedded in other types?
>> So we can't use the 64bit atomic functions for all exported types in 
>> libraries?
>>
>
> You can, but must make sure that they are aligned properly. Either like 
> WaitGroup does, or, for example, by using the common idiom of factory 
> functions that do the allocation (or by just putting it on the user to make 
> sure).
>

Get it. This is quite bug prone to write programs on 64bit OSes and the 
programs are expected to run on 32bit OSes too.
 

>  
>
>>  
>>
>>>
>>> On Fri, Feb 3, 2017 at 7:01 PM Matt Harden <matt....@gmail.com> wrote:
>>>
>>>> Doesn't the statement "32-bit compilers to not ensure [64 bit alignment 
>>>> at the start of an allocation]" contradict the sync/atomic statement "The 
>>>> first word in a global variable or in an allocated struct or slice can be 
>>>> relied upon to be 64-bit aligned."?
>>>>
>>>> On Fri, Feb 3, 2017 at 6:44 AM Ian Lance Taylor <ia...@golang.org> 
>>>> wrote:
>>>>
>>>>> On Fri, Feb 3, 2017 at 5:38 AM, T L <tapi...@gmail.com> wrote:
>>>>> > Why does WaitGroup.state method check 64-bit alignment at run time?
>>>>> > Why not make the state field as the first word of WaitGroup struct?
>>>>> >
>>>>> > // https://golang.org/src/sync/waitgroup.go?s=1857:1892#L20
>>>>> >
>>>>> > type WaitGroup struct {
>>>>> >
>>>>> > noCopy noCopy
>>>>> >
>>>>> > // 64-bit value: high 32 bits are counter, low 32 bits are waiter 
>>>>> count.
>>>>> >
>>>>> > // 64-bit atomic operations require 64-bit alignment, but 32-bit
>>>>> >
>>>>> > // compilers do not ensure it. So we allocate 12 bytes and then use
>>>>> >
>>>>> > // the aligned 8 bytes in them as state.
>>>>>
>>>>> Doesn't this comment explain the problem?
>>>>>
>>>>> Ian
>>>>>
>>>>> --
>>>>> 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 golang-nuts...@googlegroups.com.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> -- 
>> 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 golang-nuts...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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 golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to