git-svn-id: svn://db.shs.com.ru/pip@699 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2019-02-06 20:20:23 +00:00
parent b31352ffb1
commit b2c76a0e1b
14 changed files with 41 additions and 39 deletions

View File

@@ -25,6 +25,7 @@ int main() {
CONNECTU(&b, eventB1, &a, handlerA1) CONNECTU(&b, eventB1, &a, handlerA1)
CONNECTU(&b, eventB2, &a, handlerA2) CONNECTU(&b, eventB2, &a, handlerA2)
a.dump(); a.dump();
WAIT_FOREVER
b.dump(); b.dump();
b.eventB1(0.33); b.eventB1(0.33);
b.eventB2("str"); b.eventB2("str");

View File

@@ -25,7 +25,7 @@
#include "pithread.h" #include "pithread.h"
#define WAIT_FOR_EXIT while (!PIKbdListener::exiting) piMSleep(5); #define WAIT_FOR_EXIT while (!PIKbdListener::exiting) piMSleep(PIP_MIN_MSLEEP*5);
class PIP_EXPORT PIKbdListener: public PIThread class PIP_EXPORT PIKbdListener: public PIThread

View File

@@ -217,14 +217,21 @@
#define PRIVATEWB __privateinitializer__.p #define PRIVATEWB __privateinitializer__.p
#ifdef FREERTOS
# define PIP_MIN_MSLEEP 10.
#else
# define PIP_MIN_MSLEEP 1.
#endif
//! Macro used for infinite loop //! Macro used for infinite loop
#define FOREVER for (;;) #define FOREVER for (;;)
//! Macro used for infinite wait //! Macro used for infinite wait
#define FOREVER_WAIT FOREVER msleep(1); #define FOREVER_WAIT FOREVER msleep(PIP_MIN_MSLEEP);
//! Macro used for infinite wait //! Macro used for infinite wait
#define WAIT_FOREVER FOREVER msleep(1); #define WAIT_FOREVER FOREVER msleep(PIP_MIN_MSLEEP);
//! global variable enabling output to piCout, default is true //! global variable enabling output to piCout, default is true

View File

@@ -677,7 +677,7 @@ int PIEthernet::readDevice(void * read_to, int max_size) {
s = accept(sock, (sockaddr * )&client_addr, &slen); s = accept(sock, (sockaddr * )&client_addr, &slen);
if (s == -1) { if (s == -1) {
//piCoutObj << "Can`t accept new connection, " << ethErrorString(); //piCoutObj << "Can`t accept new connection, " << ethErrorString();
msleep(1); msleep(PIP_MIN_MSLEEP);
return -1; return -1;
} }
rs = ethRecv(s, read_to, max_size); rs = ethRecv(s, read_to, max_size);
@@ -787,7 +787,7 @@ int PIEthernet::writeDevice(const void * data, int max_size) {
//piCoutObj << "connect SingleTCP" << ip_s << ":" << port_s << "..."; //piCoutObj << "connect SingleTCP" << ip_s << ":" << port_s << "...";
if (::connect(sock, (sockaddr * )&PRIVATE->addr_, sizeof(PRIVATE->addr_)) != 0) { if (::connect(sock, (sockaddr * )&PRIVATE->addr_, sizeof(PRIVATE->addr_)) != 0) {
//piCoutObj << "Can`t connect to " << ip_s << ":" << port_s << ", " << ethErrorString(); //piCoutObj << "Can`t connect to " << ip_s << ":" << port_s << ", " << ethErrorString();
msleep(1); msleep(PIP_MIN_MSLEEP);
return -1; return -1;
} }
//piCoutObj << "ok, write SingleTCP" << int(data) << max_size << "bytes ..."; //piCoutObj << "ok, write SingleTCP" << int(data) << max_size << "bytes ...";

View File

@@ -199,7 +199,7 @@ void PIIODevice::write_func() {
int ret = write(item.first); int ret = write(item.first);
threadedWriteEvent(item.second, ret); threadedWriteEvent(item.second, ret);
} }
msleep(1); msleep(PIP_MIN_MSLEEP);
} }
} }
@@ -279,7 +279,7 @@ PIByteArray PIIODevice::readForTime(double timeout_ms) {
tm.reset(); tm.reset();
while (tm.elapsed_m() < timeout_ms) { while (tm.elapsed_m() < timeout_ms) {
ret = read(td, threadedReadBufferSize()); ret = read(td, threadedReadBufferSize());
if (ret <= 0) msleep(1); if (ret <= 0) msleep(PIP_MIN_MSLEEP);
else str.append(td, ret); else str.append(td, ret);
} }
delete[] td; delete[] td;

View File

@@ -197,7 +197,7 @@ public:
void start() {startThreadedRead(); startThreadedWrite();} void start() {startThreadedRead(); startThreadedWrite();}
//! Stop both threaded read and threaded write and if "wait" block until both threads are stop //! Stop both threaded read and threaded write and if "wait" block until both threads are stop
void stop(bool wait = false) {stopThreadedRead(); stopThreadedWrite(); if (wait) while (write_thread.isRunning() || isRunning()) msleep(1);} void stop(bool wait = false) {stopThreadedRead(); stopThreadedWrite(); if (wait) while (write_thread.isRunning() || isRunning()) msleep(PIP_MIN_MSLEEP);}
//! Read from device maximum "max_size" bytes to "read_to" //! Read from device maximum "max_size" bytes to "read_to"

View File

@@ -372,7 +372,7 @@ bool PISerial::read(void * data, int size, double timeout_ms) {
while (all < size && tm_.elapsed_m() < timeout_ms) { while (all < size && tm_.elapsed_m() < timeout_ms) {
ret = readDevice(&((uchar * )data)[all], size - all); ret = readDevice(&((uchar * )data)[all], size - all);
if (ret > 0) all += ret; if (ret > 0) all += ret;
else msleep(1); else msleep(PIP_MIN_MSLEEP);
} }
setOption(BlockingRead, br); setOption(BlockingRead, br);
received(data, all); received(data, all);
@@ -411,13 +411,13 @@ PIString PISerial::read(int size, double timeout_ms) {
if (size <= 0) { if (size <= 0) {
while (tm_.elapsed_m() < timeout_ms) { while (tm_.elapsed_m() < timeout_ms) {
ret = readDevice(td, 1024); ret = readDevice(td, 1024);
if (ret <= 0) msleep(1); if (ret <= 0) msleep(PIP_MIN_MSLEEP);
else str << PIString((char*)td, ret); else str << PIString((char*)td, ret);
} }
} else { } else {
while (all < size && tm_.elapsed_m() < timeout_ms) { while (all < size && tm_.elapsed_m() < timeout_ms) {
ret = readDevice(td, size - all); ret = readDevice(td, size - all);
if (ret <= 0) msleep(1); if (ret <= 0) msleep(PIP_MIN_MSLEEP);
else { else {
str << PIString((char*)td, ret); str << PIString((char*)td, ret);
all += ret; all += ret;
@@ -431,7 +431,7 @@ PIString PISerial::read(int size, double timeout_ms) {
str << PIString((char*)td, all); str << PIString((char*)td, all);
while (all < size) { while (all < size) {
ret = readDevice(td, size - all); ret = readDevice(td, size - all);
if (ret <= 0) msleep(1); if (ret <= 0) msleep(PIP_MIN_MSLEEP);
else { else {
str << PIString((char*)td, ret); str << PIString((char*)td, ret);
all += ret; all += ret;
@@ -463,13 +463,13 @@ PIByteArray PISerial::readData(int size, double timeout_ms) {
if (size <= 0) { if (size <= 0) {
while (tm_.elapsed_m() < timeout_ms) { while (tm_.elapsed_m() < timeout_ms) {
ret = readDevice(td, 1024); ret = readDevice(td, 1024);
if (ret <= 0) msleep(1); if (ret <= 0) msleep(PIP_MIN_MSLEEP);
else str.append(td, ret); else str.append(td, ret);
} }
} else { } else {
while (all < size && tm_.elapsed_m() < timeout_ms) { while (all < size && tm_.elapsed_m() < timeout_ms) {
ret = readDevice(td, size - all); ret = readDevice(td, size - all);
if (ret <= 0) msleep(1); if (ret <= 0) msleep(PIP_MIN_MSLEEP);
else { else {
str.append(td, ret); str.append(td, ret);
all += ret; all += ret;
@@ -483,7 +483,7 @@ PIByteArray PISerial::readData(int size, double timeout_ms) {
str.append(td, all); str.append(td, all);
while (all < size) { while (all < size) {
ret = readDevice(td, size - all); ret = readDevice(td, size - all);
if (ret <= 0) msleep(1); if (ret <= 0) msleep(PIP_MIN_MSLEEP);
else { else {
str.append(td, ret); str.append(td, ret);
all += ret; all += ret;

View File

@@ -281,7 +281,7 @@ bool PIBaseTransfer::send_process() {
mutex_send.unlock(); mutex_send.unlock();
if (sq >= packets_count || is_pause) { if (sq >= packets_count || is_pause) {
--i; --i;
//piMSleep(1); //piMSleep(PIP_MIN_MSLEEP);
if (is_pause) { if (is_pause) {
piMSleep(40); piMSleep(40);
//piCout << "send pause"; //piCout << "send pause";
@@ -331,7 +331,7 @@ bool PIBaseTransfer::send_process() {
if (chk == 0) return finish_send(true); if (chk == 0) return finish_send(true);
if (chk != prev_chk) rtm.reset(); if (chk != prev_chk) rtm.reset();
else if (rtm.elapsed_m() < 100) { else if (rtm.elapsed_m() < 100) {
piMSleep(1); piMSleep(PIP_MIN_MSLEEP);
continue; continue;
} }
if (is_pause) { if (is_pause) {
@@ -366,7 +366,7 @@ bool PIBaseTransfer::send_process() {
} }
// if (chk == -1) return finish_send(false); // if (chk == -1) return finish_send(false);
if (break_) return finish_send(false); if (break_) return finish_send(false);
//piMSleep(1); //piMSleep(PIP_MIN_MSLEEP);
} }
return finish_send(false); return finish_send(false);
} }
@@ -496,7 +496,7 @@ bool PIBaseTransfer::getStartRequest() {
return true; return true;
} }
mutex_session.unlock(); mutex_session.unlock();
piMSleep(1); piMSleep(PIP_MIN_MSLEEP);
} }
return false; return false;
} }

View File

@@ -66,7 +66,7 @@ void PIProcess::exec_() {
startOnce(); startOnce();
//cout << "exec wait" << endl; //cout << "exec wait" << endl;
while (!is_exec) while (!is_exec)
msleep(1); msleep(PIP_MIN_MSLEEP);
//cout << "exec end" << endl; //cout << "exec end" << endl;
} }
@@ -186,7 +186,7 @@ void PIProcess::startProc(bool detached) {
if (execve(str.data(), a, e) < 0) if (execve(str.data(), a, e) < 0)
piCoutObj << "\"execve" << str << args << "\" error :" << errorString(); piCoutObj << "\"execve" << str << args << "\" error :" << errorString();
} else { } else {
msleep(1); msleep(PIP_MIN_MSLEEP);
//cout << "wait" << endl; //cout << "wait" << endl;
if (!detached) { if (!detached) {
wait(&exit_code); wait(&exit_code);

View File

@@ -162,7 +162,7 @@ private:
return; return;
} }
if (ret > 0) { if (ret > 0) {
piMSleep(1); piMSleep(PIP_MIN_MSLEEP);
return; return;
} }
diag_.received(1); diag_.received(1);

View File

@@ -364,12 +364,12 @@ bool PIThread::waitForFinish(int timeout_msecs) {
if (!running_) return true; if (!running_) return true;
if (timeout_msecs < 0) { if (timeout_msecs < 0) {
while (running_) while (running_)
msleep(1); msleep(PIP_MIN_MSLEEP);
return true; return true;
} }
tmf_.reset(); tmf_.reset();
while (running_ && tmf_.elapsed_m() < timeout_msecs) while (running_ && tmf_.elapsed_m() < timeout_msecs)
msleep(1); msleep(PIP_MIN_MSLEEP);
return tmf_.elapsed_m() < timeout_msecs; return tmf_.elapsed_m() < timeout_msecs;
} }
@@ -378,12 +378,12 @@ bool PIThread::waitForStart(int timeout_msecs) {
if (running_) return true; if (running_) return true;
if (timeout_msecs < 0) { if (timeout_msecs < 0) {
while (!running_) while (!running_)
msleep(1); msleep(PIP_MIN_MSLEEP);
return true; return true;
} }
tms_.reset(); tms_.reset();
while (!running_ && tms_.elapsed_m() < timeout_msecs) while (!running_ && tms_.elapsed_m() < timeout_msecs)
msleep(1); msleep(PIP_MIN_MSLEEP);
return tms_.elapsed_m() < timeout_msecs; return tms_.elapsed_m() < timeout_msecs;
} }
@@ -424,10 +424,10 @@ void PIThread::__thread_func__(void * t) {
ct.tmr_.reset(); ct.tmr_.reset();
double sl(0.); double sl(0.);
while (1) { while (1) {
sl = piMind(ct.delay_ - ct.tmr_.elapsed_m(), PTHREAD_MIN_MSLEEP); sl = piMind(ct.delay_ - ct.tmr_.elapsed_m(), PIP_MIN_MSLEEP);
#ifdef WINDOWS #ifdef WINDOWS
/*if (sl <= 1. && sl >= 0.) { /*if (sl <= 1. && sl >= 0.) {
piMSleep(1.); piMSleep(PIP_MIN_MSLEEP);
continue; continue;
}*/ }*/
#endif #endif

View File

@@ -29,12 +29,6 @@
#include "pimutex.h" #include "pimutex.h"
#include "piobject.h" #include "piobject.h"
#ifdef FREERTOS
# define PTHREAD_MIN_MSLEEP 10.
#else
# define PTHREAD_MIN_MSLEEP 1.
#endif
class PIThread; class PIThread;
class PIP_EXPORT __PIThreadCollection { class PIP_EXPORT __PIThreadCollection {

View File

@@ -371,7 +371,7 @@ _PITimerImp_Pool::Pool::Pool(): PIThread() {
#ifndef FREERTOS #ifndef FREERTOS
timers.reserve(64); timers.reserve(64);
#endif #endif
start(PTHREAD_MIN_MSLEEP); start(PIP_MIN_MSLEEP);
} }
@@ -538,11 +538,11 @@ void PITimer::tickImp() {
bool PITimer::waitForFinish(int timeout_msecs) { bool PITimer::waitForFinish(int timeout_msecs) {
if (timeout_msecs < 0) { if (timeout_msecs < 0) {
while (isRunning()) while (isRunning())
msleep(1); msleep(PIP_MIN_MSLEEP);
return true; return true;
} }
PITimeMeasurer tm; PITimeMeasurer tm;
while (isRunning() && tm.elapsed_m() < timeout_msecs) while (isRunning() && tm.elapsed_m() < timeout_msecs)
msleep(1); msleep(PIP_MIN_MSLEEP);
return tm.elapsed_m() < timeout_msecs; return tm.elapsed_m() < timeout_msecs;
} }

View File

@@ -618,7 +618,7 @@ PIString Daemon::connectedDaemon() const {
void Daemon::peerConnected(const PIString & p_name) { void Daemon::peerConnected(const PIString & p_name) {
while (!inited__) piMSleep(5); while (!inited__) piMSleep(PIP_MIN_MSLEEP*5);
// PIMutexLocker ml(peers_mutex); // PIMutexLocker ml(peers_mutex);
/*piCout << "connected" << name; /*piCout << "connected" << name;
mode = 2; mode = 2;
@@ -638,7 +638,7 @@ void Daemon::peerConnected(const PIString & p_name) {
void Daemon::peerDisconnected(const PIString & p_name) { void Daemon::peerDisconnected(const PIString & p_name) {
while (!inited__) piMSleep(5); while (!inited__) piMSleep(PIP_MIN_MSLEEP*5);
piCoutObj << "peer disconnect" << p_name; piCoutObj << "peer disconnect" << p_name;
if (p_name == conn_name) { if (p_name == conn_name) {
disconnect(); disconnect();