Pthread属性用法

时间:2017-11-22 06:34:22

标签: c multithreading pthreads

我有几个关于pthread属性的问题,我找不到其他地方的答案。

  1. 如果我创建了一个属性(thread / mutex),我可以在将它分配给一个线程/互斥锁之后立即释放它,还是我必须保留它直到线程结束?
  2. 在多个线程/互斥锁上重用属性(线程/互斥锁)是否安全?

1 个答案:

答案 0 :(得分:4)

如果你阅读pthread_mutexattr_init()的POSIX规范,它会说:

  

在使用互斥锁属性对象初始化一个或多个互斥锁之后,任何影响属性对象的函数(包括破坏)都不会影响任何先前初始化的互斥锁。

同样,虽然不太清楚,pthread_attr_init()的规范说:

  

pthread_create()使用时生成的属性对象(可能通过设置各个属性值进行修改)定义了创建的线程的属性。单个属性对象可用于对pthread_create()的多个同时调用。

pthread_create()的规范说:

  

pthread_create()函数将在进程内创建一个由attr指定的属性的新线程。如果attr为NULL,则应使用默认属性。如果稍后修改attr指定的属性,则不会影响线程的属性。

我认为这些引用意味着答案是:

  1. 是的,您可以在方便时销毁属性对象。实际上,POSIX调用会复制属性。

  2. 是的,重用属性是安全的。