Lines Matching refs:lock

630   /* the lock makes sure, that thread->system_thread is written,
784 g_static_rw_lock_init (GStaticRWLock* lock)
788 g_return_if_fail (lock);
790 *lock = init_lock;
802 g_static_rw_lock_signal (GStaticRWLock* lock)
804 if (lock->want_to_write && lock->write_cond)
805 g_cond_signal (lock->write_cond);
806 else if (lock->want_to_read && lock->read_cond)
807 g_cond_broadcast (lock->read_cond);
811 g_static_rw_lock_reader_lock (GStaticRWLock* lock)
813 g_return_if_fail (lock);
818 g_static_mutex_lock (&lock->mutex);
819 lock->want_to_read++;
820 while (lock->have_writer || lock->want_to_write)
821 g_static_rw_lock_wait (&lock->read_cond, &lock->mutex);
822 lock->want_to_read--;
823 lock->read_counter++;
824 g_static_mutex_unlock (&lock->mutex);
828 g_static_rw_lock_reader_trylock (GStaticRWLock* lock)
832 g_return_val_if_fail (lock, FALSE);
837 g_static_mutex_lock (&lock->mutex);
838 if (!lock->have_writer && !lock->want_to_write)
840 lock->read_counter++;
843 g_static_mutex_unlock (&lock->mutex);
848 g_static_rw_lock_reader_unlock (GStaticRWLock* lock)
850 g_return_if_fail (lock);
855 g_static_mutex_lock (&lock->mutex);
856 lock->read_counter--;
857 if (lock->read_counter == 0)
858 g_static_rw_lock_signal (lock);
859 g_static_mutex_unlock (&lock->mutex);
863 g_static_rw_lock_writer_lock (GStaticRWLock* lock)
865 g_return_if_fail (lock);
870 g_static_mutex_lock (&lock->mutex);
871 lock->want_to_write++;
872 while (lock->have_writer || lock->read_counter)
873 g_static_rw_lock_wait (&lock->write_cond, &lock->mutex);
874 lock->want_to_write--;
875 lock->have_writer = TRUE;
876 g_static_mutex_unlock (&lock->mutex);
880 g_static_rw_lock_writer_trylock (GStaticRWLock* lock)
884 g_return_val_if_fail (lock, FALSE);
889 g_static_mutex_lock (&lock->mutex);
890 if (!lock->have_writer && !lock->read_counter)
892 lock->have_writer = TRUE;
895 g_static_mutex_unlock (&lock->mutex);
900 g_static_rw_lock_writer_unlock (GStaticRWLock* lock)
902 g_return_if_fail (lock);
907 g_static_mutex_lock (&lock->mutex);
908 lock->have_writer = FALSE;
909 g_static_rw_lock_signal (lock);
910 g_static_mutex_unlock (&lock->mutex);
914 g_static_rw_lock_free (GStaticRWLock* lock)
916 g_return_if_fail (lock);
918 if (lock->read_cond)
920 g_cond_free (lock->read_cond);
921 lock->read_cond = NULL;
923 if (lock->write_cond)
925 g_cond_free (lock->write_cond);
926 lock->write_cond = NULL;
928 g_static_mutex_free (&lock->mutex);