pthread_key_create yeni bir EÖV anahtarı ayırır. Anahtar anahtar ile gösterilen yerde saklanır. Belirli bir süre içinde ayrılabilecek anahtar sayısı PTHREAD_KEYS_MAX ile sınırlandırılmıştır. Döndürülen anahtarla ilişkilendirilmiş değer ilk başta NULLdur.
yıkıcı_işlev argümanı, eğer NULL değilse anahtarla ilişkili bir yıkıcı işlev belirtir. Bir evre pthread_exit ile veya iptal edilerek sonlandığında, evre içindeki anahtarla ilişkili değer üzerine yıkıcı_işlev işlevi çağrılır. Eğer anahtar pthread_key_delete ile silindiyse veya bir değer pthread_setspecific ile değiştirildiyse yıkıcı_işlev çağrılmaz. Yıkıcı işlevin evre sonlandırılma esnasındaki çağrılma sırası belirtilmemiştir.
Yıkıcı işlev çağrılmadan önce, NULL değeri geçerli evre içindeki anahtar ile ilişkilendirilir. Bir yıkıcı işlev NULL olmayan değerleri bu veya başka bir anahtarla tekrar ilişkilendirebilir. Bununla ilgilenmek için, eğer bütün NULL olmayan değerler için bütün yıkıcılar çağrıldıktan sonra, hala NULL olmayan yıkıcılarla ilişkilendirilmiş bazı değerler varsa, süreç tekrarlanır. LinuxThreads gerçeklemesi PTHREAD_DESTRUCTOR_ITERATIONS tekrarlamadan sonra, NULL olmayan tanımlayıcılarla ilişkilendirilmiş değer kalsa bile, süreci durdurur. Diğer uygulamalar sonsuza kadar tekrarlayabilir.
pthread_key_create 0 döndürür, ancak PTHREAD_KEYS_MAX anahtar zaten ayrılmışsa başarısız olur ve EAGAIN döndürür.