示例#1
0
void MyThread::run()
{
    isRunning = true;
    qDebug() << "From worker thread: " << currentThreadId();
    int i;
    while(1) {
        qDebug() << "From worker thread: " << currentThreadId() << ":" << i++;
        QMutexLocker locker(&m_mutex);
        if (!isRunning) {
            break;
        }
        msleep(10);
    }
}
void MyThread::run()
{
    QString x;
    const int end = m_base + 20;
    for (int i = m_base; i < end; i++) {
        qDebug() << "L" << currentThreadId() << i << '/' << end;
        QThread::msleep(100);
        if (i < 10) {
            x += QString::number(i);
            qDebug() << "lt 10";
            x += ',';
        }
    }
    qDebug() << "Terminating" << currentThreadId();
}
void qtCPU_thread::cpu_run()
{
    qDebug() << "CPU is running at thread" << currentThreadId();
    QMutexLocker locker(&mutex);
    stop_flag = false;
    run_condition.wakeOne();
}
示例#4
0
void mmthread::stop(){

        qDebug()<<"Thread::stop called from main thread: "<<currentThreadId();
        QMutexLocker locker(&m_mutex);
        m_stop=true;

}
void CRTDBSharedMemoryThread::run()
{
    qDebug()<<"m_libname ="<<m_LibName<<currentThreadId();
    mylib.setFileName(m_LibName);//文件名

    if (mylib.load())
    {
        qDebug()<<"DLL load is OK!"<<m_LibName;
        typedef CRTDBSharedMemoryLibI * (DLLAPI_CreateDriver)(QObject *parent);//初始化协议
        DLLAPI_CreateDriver *pCreateDriver = (DLLAPI_CreateDriver *)mylib.resolve("CreateDriver");//获取 用于获取类对象的全局函数
        if (pCreateDriver)
        {
            qDebug()<<"Link to Function is OK!"<<m_LibName;
            m_pRTDBSharedMemoryLibI = pCreateDriver(NULL);///< 库中导出类的初始化
            if (m_pRTDBSharedMemoryLibI->Create(m_pRTDB,QString()))
            {

            }else
            {
                qDebug()<<"Create Function Return false."<<m_LibName;
            }
        }else                       //ShowMessageSignal
        {
            qDebug() << mylib.errorString();
            qDebug()<<"Linke to Function is not OK!!!!"<<m_LibName;
        }
    }else
    {
        qDebug()<<"DLL is not loaded!"<<m_LibName;
    }
    exec();///< 线程中使用定时器时需要加上此行
}
void qtCPU_thread::keyboard_irq(const byte val)
{
    qDebug() << "Keyboard interupt happened at thread" << currentThreadId();
    QMutexLocker locker(&mutex);
    have_irq = true;
    irq_key_value = val;
}
示例#7
0
void PlayThread::run() {
#ifdef MESSAGE_ON
    cout << "start to play" << endl;
    cout << "@player.run(): " << currentThreadId() << endl;
#endif
    play();
}
示例#8
0
ULONG currentThreadId(CIDebugClient *client)
{
    IInterfacePointer<IDebugSystemObjects> sysObjects(client);
    if (sysObjects)
        return currentThreadId(sysObjects.data());
    return 0;
}
示例#9
0
void PlayThread::play(){
#ifdef MESSAGE_ON
    cout << "@player.play(): " << currentThreadId() << endl;
#endif
    timer_ptr->start(1000 / *fps);
    state_t = PLAYING;
    status = QString::fromStdString("Playing");
}
示例#10
0
MonitorItemThread::MonitorItemThread(QObject* parent)
   : QThread(parent)
   , monitor(NULL)
   , refreshTimer(new QTimer(this))
   , isRefreshing(false)
{
   threadId = currentThreadId();

   refreshTimer->setObjectName("RefreshTimer");
   QMetaObject::connectSlotsByName(this);
}
示例#11
0
	LogRecord::LogRecord(const SourceFile& src, int srcline, LogLevel lv,bool abortThen)
		:file(src),
		line(srcline),
		tid(currentThreadId()),
		time(Timestamp::now()),
		lvl(lv),
		abortLater(abortThen)
	{
		//

	}
示例#12
0
void LaserScanner::run()
{
    mTimerScan = new QTimer;
    mTimerScan->setInterval(0);
    connect(mTimerScan, SIGNAL(timeout()), SLOT(slotDoScan()));

    if(!mSimulator->isPaused()) mTimerScan->start();

    qDebug() << "LaserScanner::run(): starting LaserScanner eventloop in threadid" << currentThreadId();
    exec();
    qDebug() << "LaserScanner::run(): eventloop finished in threadid" << currentThreadId();
}
示例#13
0
void Thread::run()
{

         qDebug()<<"run in thread id is"<<currentThreadId();
//        emit threadSig();
//        exec();
//        sleep(1);
        SimArm mysim =SimArm();
        mysim.draw();


}
示例#14
0
Thread::~Thread()
{
    Log::debug("clc.thread", "Thread \"%s\" destructor", m_name.c_str());
    if (currentThreadId() == m_thread) {
        ASSERT(m_flags & DAEMON);  // Only time you should delete yourself is if you're a daemon
    } else {
        ASSERT(! (m_flags & DAEMON));
        if (m_state != JOINED) {
            interrupt();
            join();
        }
    }
}
示例#15
0
void RestfulApi::run()
{
      qDebug()<<"Webserver API running in a process thread: " << currentThreadId();
      // Create and configure the server
     server = mg_create_server(NULL, ev_handler);
      mg_set_option(server, "listening_port", "38000");
      mg_set_option(server, "document_root", ".");

      qDebug() << "Society Pro Web API. by Central Services. Listening at port 38000...";

      for (;;)  {
        mg_poll_server(server, 1000);
      }
}
示例#16
0
void PlayThread::imageUpdate() {
#ifdef MESSAGE_ON
    cout << "@player.imageUpdate(): " << currentThreadId() << endl;
#endif
    mutex.lock();
    if(imgBuffer->length() - frame_pos <= 0) {
        stop_play();
        state_t = BUFFERING;
        status  = QString::fromStdString("Buffering");
//        ui->label_status->setText(QString::fromStdString("Buffering"));
#ifdef MESSAGE_ON
        cout << "video buffering" << endl;
#endif
    } else if(!imgBuffer->isEmpty()){
        imgLabel->setPixmap(QPixmap::fromImage(imgBuffer->at(frame_pos)));
        switch(label_t){
        case ORIGINAL:
            dbgLabel->setPixmap(QPixmap::fromImage(imgBuffer->at(frame_pos)));
            break;
        case GREYSCALE:
            dbgLabel->setPixmap(QPixmap::fromImage(gryBuffer->at(frame_pos)));
            break;
        case BACKGROUND:
            dbgLabel->setPixmap(QPixmap::fromImage(backBuffer->at(frame_pos)));
            break;
        case FOREGROUND:
            dbgLabel->setPixmap(QPixmap::fromImage(dbgBuffer->at(frame_pos)));
            break;
        default:
            break;
        }
//        imgBuffer->removeFirst();
//        dbgBuffer->removeFirst();
    }
    else{
        status  = QString::fromStdString("Buffering");
#ifdef MESSAGE_ON
        cout << "image buffer empty" << endl;
#endif
    }
#ifdef MESSAGE_ON
    time_t now = time(NULL);
    cout << now%60 << ": [" << *fps << "]" <<  "<" << played_frame_cnt++ << ", (";
    cout << imgBuffer->length() << ", " << dbgBuffer->length() << "), " << imgBuffer->length() - frame_pos << ">" << endl;    
#endif
    frame_pos++;
    mutex.unlock();
}
示例#17
0
// Complete stop parameters with common parameters and report
static inline ExtensionContext::StopReasonMap
completeStopReasons(CIDebugClient *client, ExtensionContext::StopReasonMap stopReasons, ULONG ex)
{
    typedef ExtensionContext::StopReasonMap::value_type StopReasonMapValue;

    stopReasons.insert(StopReasonMapValue(std::string("executionStatus"), toString(ex)));

    if (const ULONG processId = currentProcessId(client))
        stopReasons.insert(StopReasonMapValue(std::string("processId"), toString(processId)));
    const ULONG threadId = currentThreadId(client);
    stopReasons.insert(StopReasonMapValue(std::string("threadId"), toString(threadId)));
    // Any reason?
    const std::string reasonKey = std::string(ExtensionContext::stopReasonKeyC);
    if (stopReasons.find(reasonKey) == stopReasons.end())
        stopReasons.insert(StopReasonMapValue(reasonKey, "unknown"));
    return stopReasons;
}
示例#18
0
void Thread::join()
{
    Log::debug("clc.thread", "Thread \"%s\" join", m_name.c_str());
    ASSERT(currentThreadId() != m_thread);  // Can't join yourself
    ASSERT(! (m_flags & DAEMON));       // Can't join daemon, by definition
    m_stateChange.lock();
    if (m_state != JOINED) {
        while (m_state == STARTING)
            m_stateChange.wait();
        while (m_state == RUNNING)
            m_stateChange.wait();
        ASSERT(m_state == STOPPED);
        status_t threadReturn;
        thread_join(m_thread, threadReturn);
        m_flags &= ~INTERRUPTED;
        m_state = JOINED;
        Log::debug("clc.thread", "Thread \"%s\" is joined", m_name.c_str());
        m_thread = 0;
    }
    m_stateChange.unlock();
}
示例#19
0
 ///======================================DATA ACCESS THREAD MANAGEMENT ===========================================
 //protected method that start the Data Access services into a separate thread
 void DataAccessService::run()
     {  quitting=false;
        qDebug()<<"Data Access process thread: " << currentThreadId();

        // Check if the xmpp Sever is available


        ConnectionError ce = gloox::ConnNoError;
         //TODO: Store the default identity (or the last used) to be used in the next line:
                                   //user          //path             //password
               // using SQLlite database


        std::string strXmppLoginResult = xmpp_Login("societas","123456789");

        // TODO:  Implement a util library that output the log
        qDebug() << "To Log: " << QString::fromStdString(strXmppLoginResult);

        // Here the thread continue starting, but if the connection can´t be established
        // the bussiness logic will be notified that the connection can´t be established
        // and handle following its rules.

        time_t current_timer_X = 0, last_timer_X = time(NULL);

       // infinite loop to receive xmpp events and messages
        forever
            {
            current_timer_X = time(NULL);

            if (current_timer_X - last_timer_X > 0)
                {
                last_timer_X = current_timer_X;
                // xmpp Client receiving events
                  ce = p_xmppClient->receiveXmppMessages();
                }

            if (quitting) break;

            }//forever
     }
示例#20
0
void qtCPU_thread::run()
{
    qDebug() << currentThreadId();
    if (loaded_flag)
    {
        forever
        {
            /*
             * check whether it needs to stop
             */
            {
                QMutexLocker locker(&mutex);
                if (stop_flag)
                    run_condition.wait(&mutex);
            }

            /*
             * cpu run once
             */
            {
                QMutexLocker locker(&mutex);
                if (!cpu->pc_increment(0))
                    break;
            }

            /*
             * check whether there is keyboard_irq
             */
            {
                QMutexLocker locker(&mutex);
                if (have_irq)
                {
                    have_irq = false;
                    cpu->set_keyboard_irq(irq_key_value);
                }
            }
        }
    }
}
示例#21
0
DirCleaner::DirCleaner( const QStringList& dirs ) : KueueThread()
{
    qDebug() << "[DIRCLEANER] Constructing" << currentThreadId();
    mDirs = dirs;
}
示例#22
0
void qtCPU_thread::cpu_stop()
{
    qDebug() << "CPU stoppd at thread" << currentThreadId();
    QMutexLocker locker(&mutex);
    stop_flag = true;
}
示例#23
0
void PlayThread::imageUpdate() {
#ifdef MESSAGE_ON
    cout << "@player.imageUpdate(): " << currentThreadId() << endl;
#endif
    mutex.lock();
    if(imgBuffer->size() - frame_pos <= 0) {
        stop_play();
        state_t = BUFFERING;
        status  = QString::fromStdString("Buffering");
//        ui->label_status->setText(QString::fromStdString("Buffering"));
#ifdef MESSAGE_ON
        cout << "video buffering" << endl;
#endif
    } else if(!imgBuffer->empty()){
        list<QImage>::iterator i_itr, c_itr, g_itr, b_itr, d_itr;
        i_itr = imgBuffer->begin();
        c_itr = clrBuffer->begin();
        g_itr = gryBuffer->begin();
        b_itr = backBuffer->begin();
        d_itr = dbgBuffer->begin();
        advance(i_itr, frame_pos);
        advance(c_itr, frame_pos);
        advance(g_itr, frame_pos);
        advance(b_itr, frame_pos);
        advance(d_itr, frame_pos);

        imgLabel->setPixmap(QPixmap::fromImage(*i_itr));
        if((*i_itr).isNull()){
            cerr << "empty image @" << frame_pos << endl;
            frame_pos++;
            mutex.unlock();
            return;
        }

        switch(label_t){
        case ORIGINAL:
            dbgLabel->setPixmap(QPixmap::fromImage(*i_itr));
            break;
        case COLOR:
            dbgLabel->setPixmap(QPixmap::fromImage(*c_itr));
            break;
        case GREYSCALE:
            dbgLabel->setPixmap(QPixmap::fromImage(*g_itr));
            break;
        case BACKGROUND:
            dbgLabel->setPixmap(QPixmap::fromImage(*b_itr));
            break;
        case FOREGROUND:
            dbgLabel->setPixmap(QPixmap::fromImage(*d_itr));
            break;
        default:
            break;
        }
    } else {
        status  = QString::fromStdString("Buffering");
#ifdef MESSAGE_ON
        cout << "image buffer empty" << endl;
#endif
    }
#ifdef MESSAGE_ON
    time_t now = time(NULL);
    cout << now%60 << ": [" << *fps << "]" <<  "<" << played_frame_cnt++ << ", (";
    cout << imgBuffer->length() << ", " << dbgBuffer->length() << "), " << imgBuffer->length() - frame_pos << ">" << endl;
#endif
    frame_pos++;
    mutex.unlock();
}
示例#24
0
ThreadCommon::~ThreadCommon()
{
    threadCount--;
    this->wait();
   qDebug()<<"[INFO ] ["<<__FILE__<<":"<<__LINE__<<"]: "<< "excute ~WorkThread()" <<currentThreadId() ;
}
示例#25
0
void LaserScanner::slotStart(void)
{
    qDebug() << "LaserScanner::slotStart(): starting scanner timer in thread" << currentThreadId();
    mTimerScan->start();
}
 void run() { qDebug() << "Done"  << currentThreadId(); }
示例#27
0
void ThreadToSend::recSigFromDialog()
{
    qDebug()<<"rec sig from dialog"<<"current thread id is"<<currentThreadId();
}
示例#28
0
void Thread::sleep(unsigned int ms)
{
    ASSERT(currentThreadId() == m_thread);  // Can only make yourself sleep
    thread_usleep(ms*1000);
}