Commit 859b43f1 authored by Pieter Hintjens's avatar Pieter Hintjens

Merge pull request #1107 from jlauenercern/master

Allow change of pthread priority
parents 64513d85 112ef6f1
...@@ -62,6 +62,7 @@ void zmq::thread_t::stop () ...@@ -62,6 +62,7 @@ void zmq::thread_t::stop ()
#else #else
#include <signal.h> #include <signal.h>
#include <sstream>
extern "C" extern "C"
{ {
...@@ -83,12 +84,36 @@ extern "C" ...@@ -83,12 +84,36 @@ extern "C"
} }
} }
bool getenvi(const char *env_, int &result_)
{
char *str = getenv(env_);
if(str == NULL)
{
return false;
}
std::stringstream ss(str);
return ss >> result_;
}
void zmq::thread_t::start (thread_fn *tfn_, void *arg_) void zmq::thread_t::start (thread_fn *tfn_, void *arg_)
{ {
tfn = tfn_; tfn = tfn_;
arg = arg_; arg = arg_;
int rc = pthread_create (&descriptor, NULL, thread_routine, this); int rc = pthread_create (&descriptor, NULL, thread_routine, this);
posix_assert (rc); posix_assert (rc);
int prio;
if(getenvi("ZMQ_THREAD_PRIO", prio))
{
int policy = SCHED_RR;
getenvi("ZMQ_THREAD_POLICY", policy);
struct sched_param param;
param.sched_priority = prio;
rc = pthread_setschedparam(descriptor, policy, &param);
posix_assert (rc);
}
} }
void zmq::thread_t::stop () void zmq::thread_t::stop ()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment