git-svn-id: svn://db.shs.com.ru/pip@162 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2015-10-05 08:13:12 +00:00
parent ddb2155887
commit a4c24b62c8

View File

@@ -127,6 +127,7 @@ bool PIThread::start(int timer_delay) {
# endif
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
int ret = pthread_create(&thread, &attr, thread_function, this);
piCout << "pthread_create" << thread;
pthread_attr_destroy(&attr);
if (ret == 0) {
#else
@@ -157,6 +158,7 @@ bool PIThread::startOnce() {
# endif
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
int ret = pthread_create(&thread, &attr, thread_function_once, this);
piCout << "pthread_create" << thread;
pthread_attr_destroy(&attr);
if (ret == 0) {
#else
@@ -179,6 +181,7 @@ bool PIThread::startOnce() {
void PIThread::terminate() {
if (thread == 0) return;
terminating = running_ = false;
piCout << "terminate" << thread;
#ifndef WINDOWS
# ifdef ANDROID
pthread_kill(thread, SIGTERM);
@@ -236,6 +239,7 @@ __THREAD_FUNC__ PIThread::thread_function(void * t) {
if (ct.lockRun) ct.mutex_.unlock();
ct.terminating = ct.running_ = false;
//cout << "thread " << t << " exiting ... " << endl;
piCout << "pthread_exit" << ct.thread;
#ifndef WINDOWS
pthread_detach(ct.thread);
ct.thread = 0;
@@ -271,6 +275,7 @@ __THREAD_FUNC__ PIThread::thread_function_once(void * t) {
ct.end();
ct.terminating = ct.running_ = false;
//cout << "thread " << t << " exiting ... " << endl;
piCout << "pthread_exit" << ct.thread;
#ifndef WINDOWS
pthread_detach(ct.thread);
ct.thread = 0;
@@ -318,9 +323,10 @@ void PIThread::setPriority(PIThread::Priority prior) {
priority_ = prior;
#ifndef WINDOWS
if (!running_ && (thread != 0)) return;
piCout << "setPriority" << thread;
policy_ = 0;
memset(&sparam, 0, sizeof(sparam));
pthread_getschedparam(pthread_self(), &policy_, &sparam);
pthread_getschedparam(thread, &policy_, &sparam);
sparam.
# ifndef LINUX
sched_priority
@@ -328,7 +334,7 @@ void PIThread::setPriority(PIThread::Priority prior) {
__sched_priority
# endif
= priority2System(priority_);
pthread_setschedparam(pthread_self(), policy_, &sparam);
pthread_setschedparam(thread, policy_, &sparam);
#else
if (!running_ && (thread != 0)) return;
SetThreadPriority(thread, priority2System(priority_));