qt多線程并發的處理方式?
qt多線程總結;
一、Qt下使用線程主要有兩種方法。一種是傳統的繼承QThread類,重寫run方法。該方法已經落伍了,主要原因線程不安全,需要自己手動加鎖,比較麻煩,所以推薦使用方法二。定義一個工作線程(Worker類)繼承QObject,在主線程(Controller類)中創建QThread對象、Worker對象,Worker對象調用moveToThread方法。這樣一來,整個Worker對象都移入線程中(線程安全),然后在主線程中每發射一次信號給工作線程,工作線程的槽函數就執行一次。工作線程執行完,再發射信號到主線程中,以便釋放內存。新建一個Woker對象和一個QThread對象,才能創建一個線程,如果要創建若干多個線程,則需要若干個Woker對象和QThread對象了。二、Qt下創建多線程也有兩種方法。一種是使用容器(如:QVector類、QList類)去裝入多個Worker對象和多個QThread對象,使用[](類似數組的操作),即可訪問單個對象。另一種是使用并發類QtConcurrent。三、其它問題。1、使用線程時,能編譯通過但是提示段錯誤,原因是沒有在構造函數內new Worker對象和QThread對象。2、內存泄漏,線程做完時,需要調用quit方法、wait方法,還要delete Worker對象和QThread對象。如果后面還要使用該線程,則再加上new Worker對象和QThread對象。3、調用任務管理器,可以觀察到是否出現內存泄漏。沒有任何操作,內存使用量不停增加,即為內存泄漏。上一篇我的世界奇葩指令