issue 9786 Native TLS support for pthreads

PyThread_create_key now has a failure mode that the applicatino can detect.
This commit is contained in:
Kristján Valur Jónsson 2010-09-20 02:11:49 +00:00
parent 3d8580f690
commit 2fea9b961d
3 changed files with 49 additions and 1 deletions

View file

@ -558,3 +558,46 @@ _pythread_pthread_set_stacksize(size_t size)
}
#define THREAD_SET_STACKSIZE(x) _pythread_pthread_set_stacksize(x)
#define Py_HAVE_NATIVE_TLS
int
PyThread_create_key(void)
{
pthread_key_t key;
int fail = pthread_key_create(&key, NULL);
return fail ? -1 : key;
}
void
PyThread_delete_key(int key)
{
pthread_key_delete(key);
}
void
PyThread_delete_key_value(int key)
{
pthread_setspecific(key, NULL);
}
int
PyThread_set_key_value(int key, void *value)
{
int fail;
void *oldValue = pthread_getspecific(key);
if (oldValue != NULL)
return 0;
fail = pthread_setspecific(key, value);
return fail ? -1 : 0;
}
void *
PyThread_get_key_value(int key)
{
return pthread_getspecific(key);
}
void
PyThread_ReInitTLS(void)
{}