【问题标题】:May I destroy a mutexattr object before the mutex that was initialized with this mutexattr is used?我可以在使用此 mutexattr 初始化的 mutex 之前销毁 mutexattr 对象吗?
【发布时间】:2017-11-05 04:46:20
【问题描述】:

考虑以下代码:

pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST);

pthread_mutex_t mut;
pthread_mutex_init(&mut, &attr);

pthread_mutexattr_destroy(&attr);

pthread_mutex_lock(&mut);

此代码有效吗?

如果允许互斥体包含对其初始化的属性对象的引用,那么我想在使用互斥体之前我可能不会调用pthread_mutexattr_destroy(&attr)

【问题讨论】:

    标签: c attributes pthreads posix mutex


    【解决方案1】:

    喜欢manual 说:

    在使用互斥体属性对象初始化一个或多个互斥体后,任何影响属性对象(包括销毁)的函数都不应影响任何先前初始化的互斥体。

    所以你的代码是有效的(但不要忘记检查这些函数的潜在错误)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2010-10-19
      • 2013-02-16
      • 1970-01-01
      • 2019-12-01
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多