guile-devel
[Top][All Lists]
Advanced

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

Does guile mutexes work in C


From: Stefan Israelsson Tampe
Subject: Does guile mutexes work in C
Date: Sun, 27 Apr 2014 21:22:46 +0200

This works,

pthread_mutex_t gp_gc_lock = PTHREAD_MUTEX_INITIALIZER;
void gp_no_gc()
{
  printf("lock\n");
  pthread_mutex_lock(&gp_gc_lock);
  gp_gc_p ++;
  pthread_mutex_unlock(&gp_gc_lock);
  printf("unlock\n");
}

void gp_do_gc()
{
  printf("lock\n");
  pthread_mutex_lock(&gp_gc_lock);
  gp_gc_p --;
  pthread_mutex_unlock(&gp_gc_lock);
  printf("unlock\n");
}

void *gp_after_mark_hook(void *hook_data, void *fn_data, void *data)
{
  SCM pt = scm_fluid_ref(gp_stacks);

  printf("lock\n");
  pthread_mutex_lock(&gp_gc_lock);
  if(gp_gc_p)
    {
      pthread_mutex_unlock(&gp_gc_lock);
      printf("unlock\n");
      return (void *)0;
    }
  pthread_mutex_unlock(&gp_gc_lock);
  printf("unlock\n");

...

But replacing the pthread versions with guile versions of the mutex result in the mutex getting into a locked state without leaving. I sthis a known issue?

/Stefan

reply via email to

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