call to pthread_attr_setscope() added (disabled for now) and several other small fixes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2009 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 1999-03-30 11:09:18 +00:00
parent 4417b34387
commit 58230fb1b3

View File

@ -287,7 +287,7 @@ void *wxThreadInternal::PthreadStart(void *ptr)
int rc = pthread_setspecific(gs_keySelf, thread); int rc = pthread_setspecific(gs_keySelf, thread);
if ( rc != 0 ) if ( rc != 0 )
{ {
wxLogSysError(rc, _("Can not start thread: error writing TLS.")); wxLogSysError(rc, _("Cannot start thread: error writing TLS"));
return (void *)-1; return (void *)-1;
} }
@ -464,7 +464,7 @@ wxThreadError wxThread::Create()
int prio; int prio;
if ( pthread_attr_getschedpolicy(&attr, &prio) != 0 ) if ( pthread_attr_getschedpolicy(&attr, &prio) != 0 )
{ {
wxLogError(_("Can not retrieve thread scheduling policy.")); wxLogError(_("Cannot retrieve thread scheduling policy."));
} }
int min_prio = sched_get_priority_min(prio), int min_prio = sched_get_priority_min(prio),
@ -472,7 +472,7 @@ wxThreadError wxThread::Create()
if ( min_prio == -1 || max_prio == -1 ) if ( min_prio == -1 || max_prio == -1 )
{ {
wxLogError(_("Can not get priority range for scheduling policy %d."), wxLogError(_("Cannot get priority range for scheduling policy %d."),
prio); prio);
} }
else else
@ -485,6 +485,11 @@ wxThreadError wxThread::Create()
} }
#endif // HAVE_THREAD_PRIORITY_FUNCTIONS #endif // HAVE_THREAD_PRIORITY_FUNCTIONS
#ifdef HAVE_PTHREAD_ATTR_SETSCOPE
// this will make the threads created by this process really concurrent
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
#endif // HAVE_PTHREAD_ATTR_SETSCOPE
// create the new OS thread object // create the new OS thread object
int rc = pthread_create(p_internal->GetIdPtr(), &attr, int rc = pthread_create(p_internal->GetIdPtr(), &attr,
wxThreadInternal::PthreadStart, (void *)this); wxThreadInternal::PthreadStart, (void *)this);
@ -737,10 +742,11 @@ IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
bool wxThreadModule::OnInit() bool wxThreadModule::OnInit()
{ {
if ( pthread_key_create(&gs_keySelf, NULL /* dtor function */) != 0 ) int rc = pthread_key_create(&gs_keySelf, NULL /* dtor function */);
if ( rc != 0 )
{ {
wxLogError(_("Thread module initialization failed: " wxLogSysError(rc, _("Thread module initialization failed: "
"failed to create pthread key.")); "failed to create thread key"));
return FALSE; return FALSE;
} }