函数宏

GLibREC_MUTEX_AUTO_LOCK

since: 2.80.0

声明 [src]

#define G_REC_MUTEX_AUTO_LOCK (
  mutex,
  var
)

说明 [src]

声明一个具有 g_autoptr()GRecMutexLocker 变量并锁定互斥锁。当离开范围时,互斥锁将自动解锁。该变量使用 G_GNUC_UNUSED 声明,以避免在没有在作用域中使用该变量的情况下发出编译器警告。

此功能仅支持 GCC 和 clang。在其他编译器上,没有定义此宏,并且不应在打算移植到那些编译器的程序中使用此宏。

请注意,这应该在允许声明变量的地方使用,即在使用 -Wdeclaration-after-statement 这一情况的任何语句前,或 C99 之前的 C 标准中使用。

{
  G_REC_MUTEX_AUTO_LOCK (&obj->rec_mutex, locker);

  obj->stuff_with_lock ();
  if (condition)
    {
      // No need to unlock
      return;
    }

  // Unlock before end of scope
  g_clear_pointer (&locker, g_rec_mutex_locker_free);
  obj->stuff_without_lock ();
}

自 2.80.0 起可用

这个函数不能直接由语言绑定使用。

参数

mutex

类型: -

一个 GRecMutex

var

类型: -

待声明的一个变量名。