Thread overview
[D-runtime] Update request from tango runtime
Apr 15, 2011
Sean Kelly
Apr 15, 2011
Sean Kelly
Apr 15, 2011
Fawzi Mohamed
Apr 16, 2011
Fawzi Mohamed
Apr 18, 2011
SiegeLord
Apr 19, 2011
SiegeLord
Apr 24, 2011
SiegeLord
Apr 25, 2011
Sean Kelly
April 15, 2011
On the NG, there is a request to update druntime with changes implemented in Tango (for someone porting Tango to D2).? I'm not super-familiar with fibers, so I don't want to reply to that person, but someone here should.

-Steve

April 15, 2011
IIRC there's an issue where the state variable isn't modified atomically and at a time where fibers can be multiplexed across threads in a certain way. There's a ticket open for it somewhere. I'd not made the change until now because it could wreck performance in the normal case. I'll check out the post.

Sent from my iPhone

On Apr 15, 2011, at 4:05 AM, Steve Schveighoffer <schveiguy at yahoo.com> wrote:

> On the NG, there is a request to update druntime with changes implemented in Tango (for someone porting Tango to D2).  I'm not super-familiar with fibers, so I don't want to reply to that person, but someone here should.
> 
> -Steve
> 
> _______________________________________________
> D-runtime mailing list
> D-runtime at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/d-runtime
April 15, 2011
Oh the schedulers, related but different. It's a big change. Fawzi implemented that for some work he was doing. It seems a bit beyond the scope of what I'd intended for fibers, but I should give it a look. Fawzi, what do you think?

Sent from my iPhone

On Apr 15, 2011, at 6:25 AM, Sean Kelly <sean at invisibleduck.org> wrote:

> IIRC there's an issue where the state variable isn't modified atomically and at a time where fibers can be multiplexed across threads in a certain way. There's a ticket open for it somewhere. I'd not made the change until now because it could wreck performance in the normal case. I'll check out the post.
> 
> Sent from my iPhone
> 
> On Apr 15, 2011, at 4:05 AM, Steve Schveighoffer <schveiguy at yahoo.com> wrote:
> 
>> On the NG, there is a request to update druntime with changes implemented in Tango (for someone porting Tango to D2).  I'm not super-familiar with fibers, so I don't want to reply to that person, but someone here should.
>> 
>> -Steve
>> 
>> _______________________________________________
>> D-runtime mailing list
>> D-runtime at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/d-runtime
> _______________________________________________
> D-runtime mailing list
> D-runtime at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/d-runtime
April 15, 2011
On 15-apr-11, at 15:29, Sean Kelly wrote:

> Oh the schedulers, related but different. It's a big change. Fawzi implemented that for some work he was doing. It seems a bit beyond the scope of what I'd intended for fibers, but I should give it a look. Fawzi, what do you think?
>

I think that the scheduler could be improved, the scheduler I
implemented for blip is completely external, and not in the runtime
(which indeed introduce some issues, but on the plus side one can
avoid it completely if not used.
The scheduler in the thread is not really used as far as I know, at
least not publically, it was some work by kris for I/O, personally I
would rip it out.
So I am a bit surprised tht he really needs it, I will ask him the
details.
Unification thread/fiber can be useful though. It has been a while
since I looked at the details, I will try to do some work on
parallelization, next week, so I will look if I can look at it...

ciao
Fawzi
> Sent from my iPhone
>
> On Apr 15, 2011, at 6:25 AM, Sean Kelly <sean at invisibleduck.org> wrote:
>
>> IIRC there's an issue where the state variable isn't modified atomically and at a time where fibers can be multiplexed across threads in a certain way. There's a ticket open for it somewhere. I'd not made the change until now because it could wreck performance in the normal case. I'll check out the post.
>>
>> Sent from my iPhone
>>
>> On Apr 15, 2011, at 4:05 AM, Steve Schveighoffer <schveiguy at yahoo.com> wrote:
>>
>>> On the NG, there is a request to update druntime with changes implemented in Tango (for someone porting Tango to D2).  I'm not super-familiar with fibers, so I don't want to reply to that person, but someone here should.
>>>
>>> -Steve
>>>
>>> _______________________________________________
>>> D-runtime mailing list
>>> D-runtime at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/d-runtime
>> _______________________________________________
>> D-runtime mailing list
>> D-runtime at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/d-runtime
> _______________________________________________
> D-runtime mailing list
> D-runtime at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/d-runtime

April 16, 2011
On 15-apr-11, at 16:15, Fawzi Mohamed wrote:

> [...]
> The scheduler in the thread is not really used as far as I know, at
> least not publically, it was some work by kris for I/O, personally I
> would rip it out.
> So I am a bit surprised tht he really needs it, I will ask him the
> details.
> [...]
SiegeLord are you around here?

what do you need of that part? Is it some closed source code that uses it or tago itself? can you specify better wich functions you really need?

thanks
Fawzi
April 18, 2011
I don't use the feature myself, but a few parts of Tango do use it (primarily the IO classes). I took a cursory look at how it is used and as best as I can tell, most functions are used. Some unused functions seem to be 'ready' and 'spawn'.

I also looked into make a derived Fiber class with those features, but some functions (e.g. switchOut) are final...

-SiegeLord
April 19, 2011
I don't use the feature myself, but a few parts of Tango do use it (primarily the IO classes). I took a cursory look at how it is used and as best as I can tell, most functions are used. Some unused functions seem to be 'ready' and 'spawn'.

I also looked into make a derived Fiber class with those features, but some functions (e.g. switchOut) are final...

-SiegeLord
April 24, 2011
Anyone at all? At the very least, could you make the Fiber internals protected instead of private? To the best of my understanding of the core.thread module it is impossible right now to create any fundamentally new thread-like objects because necessary initialization happens in thread_init, which isn't a function that can be extended by user level code. It is also impossible to extend Thread/Fiber directly since everything interesting is private and final.

-SiegeLord

On 04/19/2011 12:03 PM, SiegeLord wrote:
> I don't use the feature myself, but a few parts of Tango do use it (primarily the IO classes). I took a cursory look at how it is used and as best as I can tell, most functions are used. Some unused functions seem to be 'ready' and 'spawn'.
>
> I also looked into make a derived Fiber class with those features, but some functions (e.g. switchOut) are final...
>
> -SiegeLord
> _______________________________________________
> D-runtime mailing list
> D-runtime at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/d-runtime
April 25, 2011
The thing is that the switch-in/out stuff really isn't meant to be extended.  A whole bunch of stuff would have to be made public for that to work.  I'm also skeptical that a scheduler needs to be integrated directly into the Thread or Fiber classes.  What's the advantage of this design?

On Apr 24, 2011, at 10:27 AM, SiegeLord wrote:

> Anyone at all? At the very least, could you make the Fiber internals protected instead of private? To the best of my understanding of the core.thread module it is impossible right now to create any fundamentally new thread-like objects because necessary initialization happens in thread_init, which isn't a function that can be extended by user level code. It is also impossible to extend Thread/Fiber directly since everything interesting is private and final.
> 
> -SiegeLord
> 
> On 04/19/2011 12:03 PM, SiegeLord wrote:
>> I don't use the feature myself, but a few parts of Tango do use it (primarily the IO classes). I took a cursory look at how it is used and as best as I can tell, most functions are used. Some unused functions seem to be 'ready' and 'spawn'.
>> 
>> I also looked into make a derived Fiber class with those features, but some functions (e.g. switchOut) are final...
>> 
>> -SiegeLord
>> _______________________________________________
>> D-runtime mailing list
>> D-runtime at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/d-runtime
> _______________________________________________
> D-runtime mailing list
> D-runtime at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/d-runtime