mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-24 12:20:20 +02:00
Core enhancements, by Julian Graham, to Guile's thread, mutex and
condvar primitives, in preparation for SRFI-18 support.
This commit is contained in:
parent
61b6542aa6
commit
6180e336b2
6 changed files with 611 additions and 176 deletions
|
@ -54,6 +54,7 @@ typedef struct scm_i_thread {
|
|||
SCM join_queue;
|
||||
|
||||
scm_i_pthread_mutex_t admin_mutex;
|
||||
SCM mutexes;
|
||||
|
||||
SCM result;
|
||||
int canceled;
|
||||
|
@ -162,13 +163,19 @@ SCM_API SCM scm_cancel_thread (SCM t);
|
|||
SCM_API SCM scm_set_thread_cleanup_x (SCM thread, SCM proc);
|
||||
SCM_API SCM scm_thread_cleanup (SCM thread);
|
||||
SCM_API SCM scm_join_thread (SCM t);
|
||||
SCM_API SCM scm_join_thread_timed (SCM t, SCM timeout, SCM timeoutval);
|
||||
SCM_API SCM scm_thread_p (SCM t);
|
||||
|
||||
SCM_API SCM scm_make_mutex (void);
|
||||
SCM_API SCM scm_make_recursive_mutex (void);
|
||||
SCM_API SCM scm_make_mutex_with_flags (SCM flags);
|
||||
SCM_API SCM scm_lock_mutex (SCM m);
|
||||
SCM_API SCM scm_lock_mutex_timed (SCM m, SCM timeout);
|
||||
SCM_API void scm_dynwind_lock_mutex (SCM mutex);
|
||||
SCM_API SCM scm_try_mutex (SCM m);
|
||||
SCM_API SCM scm_unlock_mutex (SCM m);
|
||||
SCM_API SCM scm_unlock_mutex_timed (SCM m, SCM cond, SCM timeout);
|
||||
SCM_API SCM scm_mutex_p (SCM o);
|
||||
|
||||
SCM_API SCM scm_make_condition_variable (void);
|
||||
SCM_API SCM scm_wait_condition_variable (SCM cond, SCM mutex);
|
||||
|
@ -176,6 +183,7 @@ SCM_API SCM scm_timed_wait_condition_variable (SCM cond, SCM mutex,
|
|||
SCM abstime);
|
||||
SCM_API SCM scm_signal_condition_variable (SCM cond);
|
||||
SCM_API SCM scm_broadcast_condition_variable (SCM cond);
|
||||
SCM_API SCM scm_condition_variable_p (SCM o);
|
||||
|
||||
SCM_API SCM scm_current_thread (void);
|
||||
SCM_API SCM scm_all_threads (void);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue