On Tue, May 21, 2013 at 8:03 AM, Lucian Branescu
<[email protected]> wrote:
> Rust has task-local storage, which sounds like what you're looking for. This
> example (http://bubblingbeebles.livejournal.com/111016.html) is a bit old,
> I'm not sure it would still work.
>
>
> On 21 May 2013 09:16, Kim HyunKang <[email protected]> wrote:
>>
>> Hello list.
>>
>> I'm a Rust newbie and I'm really excited about this language
>>
>> As a process of knowing each other, I'm implementing a libgit2 bindings
>> for Rust. (You can look at the code at here:
>> https://github.com/kimhyunkang/git2-rs  though it has virtually no features
>> for now.)
>>
>> libgit2 uses thread local storage to store and retrieve error info from
>> last library call. But the Rust tutorial states that tasks are considered
>> green threads. As far as I can understand, that means tasks are not mapped
>> 1:1 to OS thread, thus making thread-local storage unsafe for direct use.
>>
>> Then I rememberd errno, another thread local storage that I know of, and
>> checked the source code to find out how core::os handles errno. But
>> core::os::errno seems to just call __errno without locking or blocking
>> anything.
>>
>> So, the question is:
>>
>> How does the runtime makes sure that errno is not overwritten by another
>> syscall failure? Is it safe to ignore the possibility of another task
>> scheduled into the same OS thread?
>>
>>    - kimhyunkang

It's http://static.rust-lang.org/doc/core/local_data.html now.
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to