[project @ 2003-12-22 16:27:10 by simonmar]
authorsimonmar <unknown>
Mon, 22 Dec 2003 16:27:10 +0000 (16:27 +0000)
committersimonmar <unknown>
Mon, 22 Dec 2003 16:27:10 +0000 (16:27 +0000)
commit354a661d0164c8ac4e4e469ec77cf06c27e028f9
tree642356b0e0cc8847375e1bd77b5866b2f5a214f9
parentfdb2b1fd406dddc78902607483961c323787ac9a
[project @ 2003-12-22 16:27:10 by simonmar]
Fix threaded RTS problem that is currently causing the conc007 test to
loop indefinitely.  Comment from the source regarding this change:

/* Major bogosity:
 *
 * In the threaded RTS, we can't set the virtual timer because the
 * thread which has the virtual timer might be sitting waiting for a
 * capability, and the virtual timer only ticks in CPU time.
 *
 * So, possible solutions:
 *
 * (1) tick in realtime.  Not very good, because this ticker is used for
 *     profiling, and this will give us unreliable time profiling
 *     results.  Furthermore, this requires picking a single OS thread
 *     to be the timekeeper, which is a bad idea because the thread in
 *     question might just be making a temporary call into Haskell land.
 *
 * (2) save/restore the virtual timer around excursions into STG land.
 *     Sounds great, but I tried it and the resolution of the virtual timer
 *     isn't good enough (on Linux) - most of our excursions fall
 *     within the timer's resolution and we never make any progress.
 *
 * (3) have a virtual timer in every OS thread.  Might be reasonable,
 *     because most of the time there is only ever one of these
 *     threads running, so it approximates a single virtual timer.
 *     But still quite bogus (and I got crashes when I tried this).
 *
 * For now, we're using (1), but this needs a better solution. --SDM
 */
ghc/rts/Itimer.c