当前位置:编程学习 > wap >>

关于多线程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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,