摘要: 現(xiàn)在我們已經(jīng)有了三個(gè)可獨(dú)立工作的線程:資源加載線程、邏輯線程、渲染線程,下一步我們需要決定它們?nèi)绾卧趯?shí)際的項(xiàng)目中相互配合,也就是所謂的應(yīng)用程序框架了,該框架需要解決以下兩個(gè)問題
首先,資源讀取線程可以簡(jiǎn)單設(shè)計(jì)為一個(gè)循環(huán)等待的線程結(jié)構(gòu),每隔一段時(shí)間檢查加載隊(duì)列中是否有內(nèi)容,如果有則進(jìn)行加載工作,如果沒有則繼續(xù)等待一段時(shí)間。這種方式雖然簡(jiǎn)單清晰,但卻存在問題,如果等待時(shí)間設(shè)得過長(zhǎng),則加載會(huì)產(chǎn)生延遲,如果設(shè)得過短,則該線程被喚醒的次數(shù)過于頻繁,會(huì)耗費(fèi)很多不必要的CPU時(shí)間。
然后,主線程是邏輯線程還是渲染線程?因?yàn)檫壿嬀€程需要處理鍵盤鼠標(biāo)等輸入設(shè)備的消息,所以我起初將邏輯線程設(shè)為主線程,而渲染線程另外創(chuàng)建,但實(shí)際發(fā)現(xiàn),幀數(shù)很不正常,估計(jì)與WM_PAINT消息有關(guān),有待進(jìn)一步驗(yàn)證。于是掉轉(zhuǎn)過來,幀數(shù)正常了,但帶來了一個(gè)新的問題,邏輯線程如何處理鍵盤鼠標(biāo)消息?
閱讀全文