diff options
| author | Michele Calgaro <michele.calgaro@yahoo.it> | 2019-04-21 23:22:20 +0900 | 
|---|---|---|
| committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2019-04-21 23:22:20 +0900 | 
| commit | dba036816b279bc1539a9f3894fbc414665d2bce (patch) | |
| tree | 29e4bf00bafe515e7afdd02168d65a47a3f9fbc0 /tqtinterface/qt4/src/tools/tqwaitcondition_unix.cpp | |
| parent | 6f1b4f0c7505a049d992a33f6e409b7c75732d4b (diff) | |
| download | experimental-dba036816b279bc1539a9f3894fbc414665d2bce.tar.gz experimental-dba036816b279bc1539a9f3894fbc414665d2bce.zip | |
Removed unnecessary and/or TDE-unrelated code.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
Diffstat (limited to 'tqtinterface/qt4/src/tools/tqwaitcondition_unix.cpp')
| -rw-r--r-- | tqtinterface/qt4/src/tools/tqwaitcondition_unix.cpp | 316 | 
1 files changed, 0 insertions, 316 deletions
| diff --git a/tqtinterface/qt4/src/tools/tqwaitcondition_unix.cpp b/tqtinterface/qt4/src/tools/tqwaitcondition_unix.cpp deleted file mode 100644 index 89ce471..0000000 --- a/tqtinterface/qt4/src/tools/tqwaitcondition_unix.cpp +++ /dev/null @@ -1,316 +0,0 @@ -/**************************************************************************** -** -** TQWaitCondition class for Unix -** -** Created : 20010725 -** -** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA. -** -** This file is part of the tools module of the TQt GUI Toolkit. -** -** This file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free -** Software Foundation and appearing in the files LICENSE.GPL2 -** and LICENSE.GPL3 included in the packaging of this file. -** Alternatively you may (at your option) use any later version -** of the GNU General Public License if such license has been -** publicly approved by Trolltech ASA (or its successors, if any) -** and the KDE Free TQt Foundation. -** -** Please review the following information to ensure GNU General -** Public Licensing requirements will be met: -** http://trolltech.com/products/qt/licenses/licensing/opensource/. -** If you are unsure which license is appropriate for your use, please -** review the following information: -** http://trolltech.com/products/qt/licenses/licensing/licensingoverview -** or contact the sales department at sales@trolltech.com. -** -** This file may be used under the terms of the Q Public License as -** defined by Trolltech ASA and appearing in the file LICENSE.TQPL -** included in the packaging of this file.  Licensees holding valid TQt -** Commercial licenses may use this file in accordance with the TQt -** Commercial License Agreement provided with the Software. -** -** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, -** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted -** herein. -** -**********************************************************************/ - -#if defined(TQT_THREAD_SUPPORT) - -#include "tqplatformdefs.h" - -typedef pthread_mutex_t TQ_MUTEX_T; - -#include "tqwaitcondition.h" -#include "tqmutex.h" -#include "tqmutex_p.h" - -#include <errno.h> -#include <string.h> - - -struct TQWaitConditionPrivate { -    pthread_cond_t cond; -}; - - -/*! -    \class TQWaitCondition tqwaitcondition.h -    \threadsafe -    \brief The TQWaitCondition class allows waiting/waking for conditions between threads. - -    \ingroup thread -    \ingroup environment - -    TQWaitConditions allow a thread to tell other threads that some -    sort of condition has been met; one or many threads can block -    waiting for a TQWaitCondition to set a condition with wakeOne() or -    wakeAll(). Use wakeOne() to wake one randomly selected event or -    wakeAll() to wake them all. For example, say we have three tasks -    that should be performed every time the user presses a key; each -    task could be split into a thread, each of which would have a -    run() body like this: - -    \code -    TQWaitCondition key_pressed; - -    for (;;) { -	key_pressed.wait(); // This is a TQWaitCondition global variable -	// Key was pressed, do something interesting -	do_something(); -    } -    \endcode - -    A fourth thread would read key presses and wake the other three -    threads up every time it receives one, like this: - -    \code -    TQWaitCondition key_pressed; - -    for (;;) { -	getchar(); -	// Causes any thread in key_pressed.wait() to return from -	// that method and continue processing -	key_pressed.wakeAll(); -    } -    \endcode - -    Note that the order the three threads are woken up in is -    undefined, and that if some or all of the threads are still in -    do_something() when the key is pressed, they won't be woken up -    (since they're not waiting on the condition variable) and so the -    task will not be performed for that key press. This can be -    avoided by, for example, doing something like this: - -    \code -    TQMutex mymutex; -    TQWaitCondition key_pressed; -    int mycount=0; - -    // Worker thread code -    for (;;) { -	key_pressed.wait(); // This is a TQWaitCondition global variable -	mymutex.lock(); -	mycount++; -	mymutex.unlock(); -	do_something(); -	mymutex.lock(); -	mycount--; -	mymutex.unlock(); -    } - -    // Key reading thread code -    for (;;) { -	getchar(); -	mymutex.lock(); -	// Sleep until there are no busy worker threads -	while( mycount > 0 ) { -	    mymutex.unlock(); -	    sleep( 1 ); -	    mymutex.lock(); -	} -	mymutex.unlock(); -	key_pressed.wakeAll(); -    } -    \endcode - -    The mutexes are necessary because the results of two threads -    attempting to change the value of the same variable simultaneously -    are unpredictable. -*/ - -/*! -    Constructs a new event signalling, i.e. wait condition, object. -*/ -TQWaitCondition::TQWaitCondition() -{ -    d = new TQWaitConditionPrivate; - -    int ret = pthread_cond_init(&d->cond, NULL); - -#ifdef TQT_CHECK_RANGE -    if (ret) -	qWarning( "Wait condition init failure: %s", strerror( ret ) ); -#endif -} - - -/*! -    Deletes the event signalling, i.e. wait condition, object. -*/ -TQWaitCondition::~TQWaitCondition() -{ -    int ret = pthread_cond_destroy(&d->cond); - -    if (ret) { -#ifdef TQT_CHECK_RANGE -	qWarning( "Wait condition destroy failure: %s", strerror( ret ) ); -#endif - -	// seems we have threads waiting on us, lets wake them up -	pthread_cond_broadcast(&d->cond); -    } - -    delete d; -} - -/*! -    This wakes one thread waiting on the TQWaitCondition. The thread -    that is woken up depends on the operating system's scheduling -    policies, and cannot be controlled or predicted. - -    \sa wakeAll() -*/ -void TQWaitCondition::wakeOne() -{ -    int ret = pthread_cond_signal(&d->cond); - -#ifdef TQT_CHECK_RANGE -    if (ret) -	qWarning("Wait condition wakeOne failure: %s", strerror(ret)); -#endif -} - -/*! -    This wakes all threads waiting on the TQWaitCondition. The order in -    which the threads are woken up depends on the operating system's -    scheduling policies, and cannot be controlled or predicted. - -    \sa wakeOne() -*/ -void TQWaitCondition::wakeAll() -{ -    int ret = pthread_cond_broadcast(&d->cond); - -#ifdef TQT_CHECK_RANGE -    if (ret) -	qWarning("Wait condition wakeAll failure: %s", strerror(ret)); -#endif -} - -/*! -    Wait on the thread event object. The thread calling this will -    block until either of these conditions is met: -    \list -    \i Another thread Q_SIGNALS it using wakeOne() or wakeAll(). This -       function will return TRUE in this case. -    \i \a time milliseconds has elapsed. If \a time is ULONG_MAX (the -       default), then the wait will never timeout (the event must be -       signalled). This function will return FALSE if the wait timed -       out. -    \endlist - -    \sa wakeOne(), wakeAll() -*/ -bool TQWaitCondition::wait(unsigned long time) -{ -    static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -    pthread_mutex_lock( &mutex ); - -    int ret; -    if (time != ULONG_MAX) { -	struct timeval tv; -	gettimeofday(&tv, 0); - -	timespec ti; -	ti.tv_nsec = ( tv.tv_usec + ( time % 1000 ) * 1000 ) * 1000; -	ti.tv_sec = tv.tv_sec + (time / 1000) + ( ti.tv_nsec / 1000000000 ); -	ti.tv_nsec %= 1000000000; - -	ret = pthread_cond_timedwait(&d->cond, &mutex, &ti); -    } else -	ret = pthread_cond_wait(&d->cond, &mutex); - -#ifdef TQT_CHECK_RANGE -    if (ret && ret != ETIMEDOUT) -	qWarning("Wait condition wait failure: %s",strerror(ret)); -#endif - -    pthread_mutex_unlock( &mutex ); - -    return (ret == 0); -} - -/*! -    \overload - -    Release the locked \a mutex and wait on the thread event object. -    The \a mutex must be initially locked by the calling thread. If \a -    mutex is not in a locked state, this function returns immediately. -    If \a mutex is a recursive mutex, this function returns -    immediately. The \a mutex will be unlocked, and the calling thread -    will block until either of these conditions is met: -    \list -    \i Another thread Q_SIGNALS it using wakeOne() or wakeAll(). This -       function will return TRUE in this case. -    \i \a time milliseconds has elapsed. If \a time is ULONG_MAX (the -       default), then the wait will never timeout (the event must be -       signalled). This function will return FALSE if the wait timed -       out. -    \endlist - -    The mutex will be returned to the same locked state. This function -    is provided to allow the atomic transition from the locked state -    to the wait state. - -    \sa wakeOne(), wakeAll() -*/ -bool TQWaitCondition::wait(TQMutex *mutex, unsigned long time) -{ -    if (! mutex) -	return FALSE; - -    if (mutex->d->type() == TQ_MUTEX_RECURSIVE) { -#ifdef TQT_CHECK_RANGE -	qWarning("Wait condition warning: using recursive mutexes with\n" -		 "                        wait conditions is undefined!"); -#endif -	return FALSE; -    } - -    int ret; -    if (time != ULONG_MAX) { -	struct timeval tv; -	gettimeofday(&tv, 0); - -	timespec ti; -	ti.tv_nsec = ( tv.tv_usec + ( time % 1000 ) * 1000 ) * 1000; -	ti.tv_sec = tv.tv_sec + (time / 1000) + ( ti.tv_nsec / 1000000000 ); -	ti.tv_nsec %= 1000000000; - -	ret = pthread_cond_timedwait(&d->cond, &mutex->d->handle, &ti); -    } else -	ret = pthread_cond_wait(&d->cond, &mutex->d->handle); - -#ifdef TQT_CHECK_RANGE -    if (ret && ret != ETIMEDOUT) -	qWarning("Wait condition wait failure: %s",strerror(ret)); -#endif - -    return (ret == 0); -} - -#endif // TQT_THREAD_SUPPORT | 
