lkml.org 
[lkml]   [2023]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v2 2/4] rust: sync: reword the `Arc` safety comment for `Sync`
From
On 5/23/23 17:50, Gary Guo wrote:
>> -// SAFETY: It is safe to send `&Arc<T>` to another thread when the underlying `T` is `Sync` for the
>> -// same reason as above. `T` needs to be `Send` as well because a thread can clone an `&Arc<T>`
>> -// into an `Arc<T>`, which may lead to `T` being accessed by the same reasoning as above.
>> +// SAFETY: It is safe to send `&Arc<T>` to another thread when the underlying `T` is `Sync`
>> +// because it effectively means sharing `&T` (which is safe because `T` is `Sync`); additionally,
>> +// it needs `T` to be `Send` because any thread that has a `&Arc<T>` may clone it and get an
>> +// `Arc<T>` on that thread, so the thread may ultimately access `T` using a mutable reference, for
>> +// example, when the reference count reaches zero and `T` is dropped.
>
> "for example" here implies that there are other case to get a mutable
> reference? I don't think that's true for our `Arc` since we don't
> provide a `get_mut` method.

Ah, yes, that's true. Good point.

\
 
 \ /
  Last update: 2023-05-23 19:08    [W:0.096 / U:0.156 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site