chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Live programming with Chicken


From: Jörg F. Wittenberger
Subject: Re: [Chicken-users] Live programming with Chicken
Date: Fri, 04 Jul 2014 09:59:35 +0200
User-agent: Mozilla/5.0 (X11; Linux armv7l; rv:24.0) Gecko/20100101 Icedove/24.5.0

Am 03.07.2014 17:34, schrieb Daniel Leslie:

Unless I missed a radical change in Chicken, its SRFI-18 threads are green threads and not real system threads. As a result, blocking operations will block all threads and no real gain is had from the hardware's support for multithreading.

Because of those issues I suggest avoiding SRFI-18 threads altogether. They aren't worth the hassle.

-Dan


Depends… If your job is to manage a lot of network i/o or other asynchronous events, what would you do without SRFI-18?  Probably write your own event loop.  That would be equivalent to green threads in turn.

Having said that let me add a note about my personal taste: I'm using a wrapper over SRFI-18 (which could be implemented without SRFI-18) to provide a more Schemish API to threads.  Like:

(!map <proc> <list>)
(!apply <proc> <list>)

Which would do the same thing as "map" and "apply", just returning a promise to the result and apply <proc> in parallel to the calling thread and (in case of !map) in parallel to all elements in the list.

So yes, SRFI-18 is kind of a hassle.  But green threads retain their purpose.

On 3 Jul 2014 04:13, "Kristian Lein-Mathisen" <address@hidden> wrote:
That is strange, I've experienced alex's problem too - having to yield a little to give the REPL some room.

Anyhow, for others who might come across this thread: alex's idea works great, but you need to be careful with blocking IO on your REPL. If you don't use parley or something similar, chances are that your REPL srfi-18-thread will block your srfi-18-game-thread while it's waiting for IO.

K.


On Wed, Jul 2, 2014 at 9:07 PM, John Cowan <address@hidden> wrote:
alex scripsit:

> I had some trouble with this last part at first: the original thread
> waited several seconds before evaluating my input. I think that the
> fix was nothing more than calling thread-yield! every loop
> iteration.

If you are depending on thread-yield! for correctness rather than
efficiency, you are doing something wrong (but I don't know what).
SRFI 18 schedulers are not required to be fair in any way.

--
John Cowan          http://www.ccil.org/~cowan        address@hidden
He that would foil me must use such weapons as I do, for I have not
fed my readers with straw, neither will I be confuted with stubble.
                        --Thomas Vaughan (1650)

_______________________________________________
Chicken-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/chicken-users


_______________________________________________
Chicken-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/chicken-users



_______________________________________________
Chicken-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/chicken-users


reply via email to

[Prev in Thread] Current Thread [Next in Thread]