- detachstate
Evrenin birleşimci bir durumda mı (PTHREAD_CREATE_JOINABLE değeri)
yoksa ayrık durumda mı (PTHREAD_CREATE_DETACHED) oluşturulacağını seçer. Öntanımlı olan PTHREAD_CREATE_JOINABLE değeridir.
Birleşimci durumunda, başka bir evre, evrenin sonlanışıyla eşzamanlanabilir ve pthread_join kullanarak kendi sonlanma kodunu kurtarabilir,
fakat bazı evre özkaynakları evre sonlandıktan sonra ayrılmış kalır ve ancak başka bir evre o evre üzerinde pthread_join uygularsa geri alınabilir.
Ayrık durumda, evre sonlandığında özkaynakları anında serbest bırakılır,
fakat evrenin sonlandırılışında eşzamanlamak için pthread_join kullanılamaz.
Birleşimci durumda oluşturulan bir evre daha sonra pthread_detach ile ayrık evreye konulabilir.
- schedpolicy
Evre için zamanlama ilkesini seçilir: SCHED_OTHER (normal, gerçek zamanlı olmayan zamanlama), SCHED_RR (gerçek zamanlı, döner turnuva) veya SCHED_FIFO (gerçek zamanlı, ilk giren ilk çıkar).
Öntanımlı olan SCHED_OTHER ilkesidir.
Gerçek zamanlı zamanlama ilkeleri olan SCHED_RR ve SCHED_FIFO ilkeleri sadece süper kullanıcı haklarına sahip süreçler için mevcuttur. Eğer yetkisizken gerçek zamanlı bir ilke kurmayı denerseniz pthread_attr_setschedparam işlevi başarısız olur ve ENOTSUP hatasını döndürür.
Bir evre oluşturulduktan sonra, zamanlama ilkesi pthread_setschedparam ile değiştirilebilir.
- schedparam
Evre için zamanlama parametresini (zamanlama önceliği) değiştirir. Öntanımlı değeri 0'dır.
Bu özellik zamanlama ilkesi SCHED_OTHER ise anlamlı değildir; bu sadece gerçek zamanlı SCHED_RR ve SCHED_FIFO ilkelerini ilgilendirir.
Bir evre oluşturulduktan sonra, zamanlama önceliği pthread_setschedparam ile değiştirilebilir.
- inheritsched
Yeni oluşturlan evre için zamanlama ilkesinin ve parametresinin schedpolicy ve schedparam özelliklerinin
değerleriyle mi (PTHREAD_EXPLICIT_SCHED değeri) yoksa üst evreden miras alınarak mı (PTHREAD_INHERIT_SCHED değeri) belirleneceğini seçer. Öntanımlı değer PTHREAD_EXPLICIT_SCHED değeridir.
- scope
Oluşturulan evre için zamanlama çekişme kapsamını seçer.
Öntanımlı değeri PTHREAD_SCOPE_SYSTEM'dir ve bu, evrelerin işlemci zamanı için makinede çalışan bütün süreçlerle çekişmesi anlamına gelir. Evre öncelikleri makinede çalışan diğer bütün süreçlere göre yorumlanır. Diğer bir olasılık, PTHREAD_SCOPE_PROCESS olup bu, evrelerin zamanlama çekişmesinin sadece çalışan sürecin evreleri arasında gerçekleştiği anlamına gelir: evre öncelikleri sürecin diğer evrelerine göre yorumlanır, diğer süreçlerin önceliklerine bakılmaz.
PTHREAD_SCOPE_PROCESS LinuxThreads'de desteklenmemektedir.
Eğer kapsamı bu değer olarak ayarlamaya çalışırsanız, pthread_attr_setscope başarısız olur ve ENOTSUP döndürür.
- stackaddr
Uygulama yönetimli yığıt için adres sağlar. Yığıtın büyüklüğü en az PTHREAD_STACK_MIN olmalıdır.
- stacksize
Evre için oluşturulan yığıtın büyüklüğünü değiştirir. Değer yığıt için asgari büyüklüğü bayt cinsinden tanımlar.
Eğer değer sistemin azami yığıt büyüklüğünü aşarsa veya PTHREAD_STACK_MIN değerinden küçükse,
pthread_attr_setstacksize başarısız olur ve EINVAL döndürür.
- stack
Yeni evreye, kullanmak için uygulama yönetimli yığıta hem adresi hem de büyüklüğü sağlar.
Bellek alanının tabanı, bayt cinsinden stacksize büyüklüğündeki stackaddrdir.
Eğer stacksize değeri PTHREAD_STACK_MIN değerinden az ise veya sistemin azami yığın büyüklüğünden büyükse veya stackaddr değeri uygun hizalamadan yoksunsa, pthread_attr_setstack başarısız olur ve EINVAL döndürür.
- guardsize
Evre yığıtının koruma alanının asgari büyüklüğünü bayt cinsinden değiştirir. Varsayılan büyüklük tek sayfadır. Eğer bu değer belirtilirse, en yakın sayfa büyüklüğüne yuvarlanır.
Değer 0'a eşitlenirse, bu evre için koruma alanı oluşturulmaz. Koruma alanı için ayrılan yer yığıt taşmalarını yakalamak için kullanılır. Bu nedenle, yığıt üzerinde büyük yapılar ayrılacağında, yığıt taşmalarını yakalamak için daha büyük koruma alanı gerekebilir.
Çağrıcı kendi yığıtlarını yönetiyorsa (eğer stackaddr özelliği belirtildiyse), o zaman guardsize özelliği dikkate alınmaz.
Eğer değer stacksize değerini aşarsa,
pthread_atrr_setguardsize başarısız olur ve EINVAL döndürür.