pthread_join evre ile tanımlanan evre sonlanıncaya kadar çağıran evrenin çalıştırılmasını pthread_exit işlevini çağırarak veya iptal edilerek askıya alır.
Eğer evre_dönüş NULL değilse, evrenin dönüş değeri evre_dönüş ile gösterilen yerde saklanır. evrenin dönüş değeri ya pthread_exite verdiği argümandır ya da eğer evre iptal edildiyse PTHREAD_CANCELED değeridir.
Birleşmiş evre evre birleşebilir durumda olmalıdır: pthread_detach ile ayrılmış olmamalıdır veya
PTHREAD_CREATE_DETACHED özelliği pthread_create işlevine verilmemiş olmalıdır.
Birleşebilir bir evre sonlandığında, onun bellek özkaynakları (evre tanımlayıcısı ve yığıt) başka bir evre üzerinde pthread_join uygulayıncaya kadar serbest bırakılmazlar. Bu nedenle, bellek kaçağını önlemek için pthread_join işlevinin her birleşebilir evre için çağrılması gerekir.
Verilen bir evrenin sonlanması için en çok bir evre bekleyebilir.
Üzerinde başka bir evrenin sonlanması için beklemekte olduğu, bir evre evresi üzerinde, pthread_join çağrısı hata döndürür.
pthread_join bir iptal noktasıdır. pthread_joinde askıya alınmış bir evre iptal edilirse, evre hemen işletmeyi sürdürür ve evre evresinin sonlanması beklenmeden iptal işletilir. Eğer pthread_join süresince iptal yaşanırsa, evre evresi birleşmemiş kalır.
Başarı halinde, evrenin dönüş değeri evre_dönüş ile gösterilen yerde saklanır ve 0 döndürülür. Hata halinde, aşağıdaki değerlerden biri döndürülür:
- ESRCH
evre ile belirtilene uygun bir evre bulunamadı.
- EINVAL
evre evresi ayrılmış veya başka bir evre evrenin sonlanmasını beklemektedir.
- EDEADLK
evre argümanı çağıran evreyi belirtmektedir.