关于多线程start函数
run函数开头大致如下:cout<<"1begin player"<<endl;
struct WAV_HEADER
{
char rld[4]; //riff 鏍囧織绗﹀彿
int rLen;
char wld[4]; //鏍煎紡绫诲瀷锛坵ave锛?
char fld[4]; //"fmt"
int fLen; //sizeof(wave format matex)
short wFormatTag; //缂栫爜鏍煎紡
short wChannels; //澹伴亾鏁?
int nSamplesPersec ; //閲囨牱棰戠巼
int nAvgBitsPerSample;//WAVE鏂囦欢閲囨牱澶у皬
short wBlockAlign; //鍧楀榻?
short wBitsPerSample; //WAVE鏂囦欢閲囨牱澶у皬
char dld[4]; //鈥漝ata鈥?
int wSampleLength; //闊抽鏁版嵁鐨勫ぇ灏?
} wav_header;
mutex.lock();
cout<<"begin player"<<endl;
FILE *fp;
fp=fopen(wav_name,"rb");//后面还有
但是出现问题,当第一次调用start函数时,检测到run函数执行一次,但是后面有调用一次,只看到函数输出
"1begin player" (run函数开头,代码见上),第三次什么都没有看到输出,请问各位这究竟是怎么回事? 多线程 start --------------------编程问答-------------------- 只看到你mutex.lock();
没看到你mutex.unlock();
被你阻塞了。你最好还是用QMutexLocker locker(&mutex);放在你的run的第一行 --------------------编程问答-------------------- 问题暂时解决了,mutex.unlock();在下面,不过我把两个函数都删掉就好了,这个线程没有那个变量是别的线程要修改或者读取的,应该不用锁吧 --------------------编程问答-------------------- mutex在需要互斥操作的时候就需要。比如:不同的线程访问同一个变量,并打算进行修改的时候
补充:移动开发 , Qt