Commit graph

22 commits

Author SHA1 Message Date
Alex Shinn
b10cb94e17 Reset the current parameters in child threads.
This is simple and fast.  Inheriting all threads causes immediate
problems with exception handlers, and in general should use
copy-on-write behavior so that child threads can't affect parents.  If
we make an eager copy of the parameters we can filter out just the
exception handler, but then thread creation is expensive.  The ideal
design might allow selectively enabling parameter inheritance.
2013-05-29 20:40:48 +09:00
Alex Shinn
86cc80f67f Patch from Lorenzo to fix previous incomplete patch. 2013-05-28 19:53:14 +09:00
Alex Shinn
dde47a7846 Setting new thread's dynamic wind state to a fresh root. 2013-05-27 22:23:54 +09:00
Alex Shinn
99c8992207 make-thread no longer needs to reset the dynamic continuation 2013-05-26 08:58:19 +09:00
Alex Shinn
e281854483 SRFI-18 can now build without error for threadless builds, as an empty library.
Actually importing it in this case reports an error.
2013-02-27 20:58:44 +09:00
Alex Shinn
20c62ffe4a The global ABI error object needs to be an immediate, since if
the ABI is incompatible we can't even necessarily refer to a
global from within the bad library.
2013-02-10 16:38:18 +09:00
Alex Shinn
3e241e3a3e Simplifying scheduler case where the only available thread is waiting on a port.
Instead of a one-time poll, we just use the default small sleep + loop case,
so we use the normal poll next time through the scheduler.
This fixes a potential case where a lone thread waiting on I/O could hang,
discovered by Lorenzo.
2013-01-14 17:59:40 +09:00
Alex Shinn
da328bb88c Another thread patch from Lorenzo. If we're reduced to scheduling
a single thread blocked on an fd and the poll fails, optimistically
unblock it (so it can block again naturally), instead of just running
it still in a wait status.
2013-01-06 00:22:54 +09:00
Alex Shinn
f209c38f4f sexp_blocker can block on fileno objects 2012-12-31 00:25:13 +09:00
Alex Shinn
3d161d4d2f If we are re-awakened waiting on a thread-join! but without timing out,
try to join again to make sure it's really dead.
2012-10-13 23:51:55 +09:00
Alex Shinn
35bfe1702b thread-sleep! and other timeouts now accept ratios 2012-09-17 15:11:05 +09:00
Alex Shinn
21d4fc670c fixing bug in scheduler queueing paused threads 2012-09-16 15:08:19 +09:00
Alex Shinn
fcaa906954 Another patch from Lorenzo for non-fixnum thread timeouts. 2012-09-03 20:17:46 +09:00
Alex Shinn
4bd428da9e Unblock the current thread if it was waiting on an fd with activity.
Prevents useless extra polling slowing down the process as noted in issue #144.
2012-08-25 12:49:34 +09:00
Alex Shinn
b40370be52 thread-join! now returns the result or raises the exception of the joined thread 2012-08-15 21:23:39 +09:00
Alex Shinn
51c12f6115 If the only available thread is paused and we need to schedule it, remove it from the paused list.
Fixes issue #138 - otherwise the thread can be revived in the repl after we sleep.
2012-08-13 13:49:48 +00:00
Alex Shinn
10b1110439 Fixing mutex-unlock! with paused thread waiting on mutex-lock! 2012-08-08 00:21:00 +09:00
Alex Shinn
a3daf9f728 don't check for a timeout on thread-join! unless one was specified 2012-07-21 18:46:56 +09:00
Alex Shinn
cdb8760fcc Need to unpause a paused thread if we want to terminate it. 2012-07-21 17:05:05 +09:00
Alex Shinn
057f6b2dea Removing debug code not meant for commit. 2012-05-19 07:54:07 +09:00
Alex Shinn
a979e6ffcf bugfix for reading non-ascii chars 2012-05-19 07:52:17 +09:00
Alex Shinn
85a7efc003 automatically making sockets non-blocking on accept 2012-05-14 08:37:45 -04:00