Exemplo n.º 1
0
static void
test_rwlock5 (void)
{
  static GRWLock lock;
  gboolean ret;

  ret = g_rw_lock_reader_trylock (&lock);
  g_assert (ret);
  ret = g_rw_lock_reader_trylock (&lock);
  g_assert (ret);

  g_rw_lock_reader_unlock (&lock);
  g_rw_lock_reader_unlock (&lock);
}
Exemplo n.º 2
0
void
fu_mutex_lock_dbg (FuMutex *self, FuMutexAccess kind, const gchar *strloc, const gchar *strfunc)
{
	g_debug ("LOCK  \t%s\t%s\t%s\t%s",
		 self->id,
		 kind == FU_MUTEX_ACCESS_READ ? "READ" : "WRITE",
		 strloc,
		 strfunc);
	if (kind == FU_MUTEX_ACCESS_READ) {
		if (!g_rw_lock_reader_trylock (&self->rw_lock)) {
			g_debug ("failed to read lock, write lock held by %s",
				 self->writer->str);
		}
		g_string_printf (self->reader, "%s:%s", strloc, strfunc);
	} else {
		if (!g_rw_lock_writer_trylock (&self->rw_lock)) {
			g_debug ("failed to write lock, read lock held by %s, "
				 "write lock held by %s",
				 self->reader->str, self->writer->str);
		}
		g_string_printf (self->writer, "%s:%s", strloc, strfunc);
	}
}