分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
參考自《精通qt4程式設計》。
qt為實現執行緒的同步與互斥,提供了幾個類。
下面主要介紹三個類:
一、qmutex和qmutexlocker
[cpp]view plain
copy
print?
class key
int createkey()
int value() const
private:
int key;
qmutex mutex;
};
class key int createkey() int value() const private: int key; qmutex mutex;};
二、qsemaphore
[cpp]view plain
copy
print?
#include
#include
#include
const
int datasize = 100000;
const
int buffersize = 8192;
int buffer[buffersize];
qsemaphore freebytes(buffersize);
qsemaphore usedbytes(0);
class producer : public qthread
; void producer::run()
} class consumer : public qthread
; void consumer::run()
fprintf(stderr, "/n");
} int main(int argc, char *argv)
三、qwaitcondition
[cpp]view plain
copy
print?
#include
#include
#include
const
int datasize = 10000;
const
int buffersize = 8192;
int buffer[buffersize];
qwaitcondition bufferempty;
qwaitcondition bufferfull;
qmutex mutex;
int numusedbytes = 0;
int rindex=0;
class producer : public qthread
; void producer::run()
} class consumer : public qthread
; void consumer::run()
printf("/n");
} int main(int argc, char *argv)
producer producer;
consumer consumera;
consumer consumerb;
producer.start();
consumera.start();
consumerb.start();
producer.wait();
consumera.wait();
consumerb.wait();
return 0;
}
上面用qsemaphore和qwaitcondition兩個類完成生產者和消費者例項,對
我們實際工作很有益處。
給我老師的人工智慧教程打call!
多執行緒同步與互斥
1.互斥 include include include include include pthread mutex t mutex pthread mutex initializer int lock var 0 time t end time void pthread1 void arg voi...
Qt 多執行緒同步之互斥鎖
qmutex需要配對使用lock 和unlock 來實現 段的保護 qmutexlocker是另外乙個簡化了互斥量處理的類。qmutexlocker建構函式接受乙個互斥量作為引數並將其鎖定,qmutexlocker的析構函式則將此互斥量解鎖,所以在qmutexlocker例項變數的生存期內的 段得到...
Linux 多執行緒同步與互斥
在linux的多執行緒同步與互斥中,主要提供了訊號量的同步方式,以及互斥鎖和條件變數等訪問共享資源的方式。訊號量主要用於執行緒間的同步操作,兩個執行緒協同完成一件事情,在乙個執行緒完成乙個動作後,該需要通知另外乙個執行緒,進行相應的操作。1.1 需要包含的標頭檔案 include1.2 定義乙個全域...