mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-18 21:29:18 +02:00
* srfi-18: define all of the components of the *primordial-thread* thread object * srfi-18: pthread-terminate! takes a thread object as argument Handle this by checking if the argument is the primordial thread, current thread or another thread. The first two cases remain almost identical to the previous implementation. To terminate a thread (which is not the caller) we use a pthread key which contains the thread data. The destructor is set to Cyc_end_thread and will terminate the thread when pthread_cancel is called. This ensures that Cyc_end_thread is called with the correct thread data by the thread which will be terminated. * runtime: cast to the required type for pthread_key_create * runtime: clear the thread_key before exiting the thread * runtime: handle cancelled threads separately We probably don't want to call pthread_exit in the destructor. Similarly, we don't want to perform a longjmp (i.e. GC(...)) in the desctructor. * runtime: do a minor GC for cancelled threads The main idea is to avoid a longjmp and return to the destructor for the cancelled thread. So, adjust GC and gc_minor to allow for a NULL continuation. |
||
---|---|---|
.. | ||
comparators | ||
list-queues | ||
sets | ||
sorting | ||
vectors | ||
1.scm | ||
1.sld | ||
2.scm | ||
2.sld | ||
18.sld | ||
27.sld | ||
28.scm | ||
28.sld | ||
60.scm | ||
60.sld | ||
69.sld | ||
106.sld | ||
111.sld | ||
113.sld | ||
117.sld | ||
121.scm | ||
121.sld | ||
128.sld | ||
132.sld | ||
133.sld | ||
143.sld | ||
README.md | ||
test-1.scm | ||
test-2.scm | ||
vectors-impl.scm |