資料介紹
Windows CE 進(jìn)程、線程和內(nèi)存管理(二)
2006-12-09 17:50:44 來(lái)源:嵌入式資訊網(wǎng)
分享到: 二、同步
在多數(shù)情況下,線程之間難免要相互通信、相互協(xié)調(diào)才能完成任務(wù)。比如,當(dāng)有多個(gè)線程共同訪問(wèn)同一個(gè)資源時(shí),就必須保證一個(gè)線程正讀取這個(gè)資源數(shù)據(jù)的時(shí)候,其它線程不能夠修改它。這就需要線程之間相互通信,了解對(duì)方的行為。再有當(dāng)一個(gè)線程要準(zhǔn)備執(zhí)行下一個(gè)任務(wù)之前,它必須等待另一個(gè)線程終止才能運(yùn)行,這也需要彼此相互通信。實(shí)際開發(fā)過(guò)程中,線程間需要同步的情況非常多。Windows CE.NET給我們提供了很多的同步機(jī)制,熟練的掌握這些機(jī)制并合理運(yùn)用會(huì)使線程之間的同步更合理、更高效。進(jìn)程間的通信機(jī)制在下一篇文章中講解。
Windows CE.NET具有兩種運(yùn)行模式:用戶模式和內(nèi)核模式。并且允許一個(gè)運(yùn)行于用戶模式的應(yīng)用程序隨時(shí)切換為內(nèi)核模式,或切換回來(lái)。線程同步的有些解決辦法運(yùn)行在用戶模式,有些運(yùn)行在內(nèi)核模式?!禬indows核心編程》上說(shuō)從用戶模式切換到內(nèi)核模式再切換回來(lái)至少要1000個(gè)CPU周期。我查看過(guò)CE下API函數(shù)SetKMode的源碼,這個(gè)函數(shù)用于在兩種模式間切換,改變模式只需修改一些標(biāo)志,至于需要多少個(gè)CPU周期很難確定。但至少可以肯定來(lái)回切換是需要一定時(shí)間的。所以在選擇同步機(jī)制上應(yīng)該優(yōu)先考慮運(yùn)行在用戶模式的同步解決辦法。
1、互鎖函數(shù)
互鎖函數(shù)運(yùn)行在用戶模式。它能保證當(dāng)一個(gè)線程訪問(wèn)一個(gè)變量時(shí),其它線程無(wú)法訪問(wèn)此變量,以確保變量值的唯一性。這種訪問(wèn)方式被稱為原子訪問(wèn)?;ユi函數(shù)及其功能見(jiàn)如下列表:
函數(shù)參數(shù)和功能
InterlockedIncrement參數(shù)為PLONG類型。此函數(shù)使一個(gè)LONG變量增1
InterlockedDecrement參數(shù)為PLONG類型。此函數(shù)使一個(gè)LONG變量減1
InterlockedExchangeAdd參數(shù)1為PLONG類型,參數(shù)2為L(zhǎng)ONG類型。此函數(shù)將參數(shù)2賦給參數(shù)1指向的值
InterlockedExchange參數(shù)1為PLONG類型,參數(shù)2為L(zhǎng)ONG類型。此函數(shù)將參數(shù)2的值賦給參數(shù)1指向的值
InterlockedExchangePointer參數(shù)為PVOID* 類型,參數(shù)2為PVOID類型。此函數(shù)功能同上。具體參見(jiàn)幫助
InterlockedCompareExchange參數(shù)1為PLONG類型,參數(shù)2為L(zhǎng)ONG類型,參數(shù)3為L(zhǎng)ONG類型。此函數(shù)將參數(shù)1指向的值與參數(shù)3比較,相同則把參數(shù)2的值賦給參數(shù)1指向的值。不相同則不變
InterlockedCompareExchangePointer參數(shù)1為PVOID* 類型,參數(shù)2為PVOID類型,參數(shù)3為PVOID。此函數(shù)功能同上。具體參見(jiàn)幫助
2、臨界區(qū)
臨界區(qū)對(duì)象運(yùn)行在用戶模式。它能保證在臨界區(qū)內(nèi)所有被訪問(wèn)的資源不被其它線程訪問(wèn),直到當(dāng)前線程執(zhí)行完臨界區(qū)代碼。除了API外,MFC也對(duì)臨界區(qū)函數(shù)進(jìn)行了封裝。臨界區(qū)相關(guān)函數(shù):
void InitializeCriticalSection ( LPCRITICAL_SECTION );
void EnterCriticalSection ( LPCRITICAL_SECTION );
void LeaveCriticalSection ( LPCRITICAL_SECTION );
void DeleteCriticalSection ( LPCRITICAL_SECTION );
舉例如下:
void CriticalSectionExample (void)
{
CRITICAL_SECTION csMyCriticalSection;
InitializeCriticalSection (&csMyCriticalSection); ///初始化臨界區(qū)變量
__try
{
EnterCriticalSection (&csMyCriticalSection); ///開始保護(hù)機(jī)制
///此處編寫代碼
}
__finally ///異常處理,無(wú)論是否異常都執(zhí)行此段代碼
{
LeaveCriticalSection (&csMyCriticalSection); ///撤銷保護(hù)機(jī)制
}
}
MFC類使用更簡(jiǎn)單:
CCriticalSection cs;
cs.Lock();
///編寫代碼
cs.Unlock();
使用臨界區(qū)要注意的是避免死鎖。當(dāng)有兩個(gè)線程,每個(gè)線程都有臨界區(qū),而且臨界區(qū)保護(hù)的資源有相同的時(shí)候,這時(shí)就要在編寫代碼時(shí)多加考慮。
3、事件對(duì)象
事件對(duì)象運(yùn)行在內(nèi)核模式。與用戶模式不同,內(nèi)核模式下線程利用等待函數(shù)來(lái)等待所需要的事件、信號(hào),這個(gè)等待過(guò)程由操作系統(tǒng)內(nèi)核來(lái)完成,而線程處于睡眠狀態(tài),當(dāng)接收到信號(hào)后,內(nèi)核恢復(fù)線程的運(yùn)行。內(nèi)核模式的優(yōu)點(diǎn)是線程在等待過(guò)程中并不浪費(fèi)CPU時(shí)間,缺點(diǎn)是從用戶模式切換到內(nèi)核模式需要一定的時(shí)間,而且還要切換回來(lái)。在講解事件對(duì)象前應(yīng)該先談?wù)劦却瘮?shù)。等待函數(shù)有四個(gè)。具體參數(shù)和功能見(jiàn)下表:
函數(shù)參數(shù)和功能
WaitForSingleObject參數(shù)1為HANDLE類型,參數(shù)2為DWORD類型。此函數(shù)等待參數(shù)1標(biāo)識(shí)的事件,等待時(shí)間為參數(shù)2的值,單位ms。如果不超時(shí),當(dāng)事件成為有信號(hào)狀態(tài)時(shí),線程喚醒繼續(xù)運(yùn)行。
WaitForMultipleObjects參數(shù)1為DWORD類型,參數(shù)2為HANDLE * 類型,參數(shù)3為BOOL類型,參數(shù)4為DWORD類型。此函數(shù)等待參數(shù)2指向的數(shù)組中包含的所有事件。如果不超時(shí),當(dāng)參數(shù)3為FALSE時(shí),只要有一個(gè)事件處于有信號(hào)狀態(tài),函數(shù)就返回這個(gè)事件的索引。參數(shù)3為TRUE時(shí),等待所有事件都處于有信號(hào)狀態(tài)時(shí)才返回。
MsgWaitForMultipleObjects參數(shù)1為DWORD類型,參數(shù)2為L(zhǎng)PHANDLE類型,參數(shù)3為BOOL類型,參數(shù)4為DWORD類型,參數(shù)5為DWORD類型。此函數(shù)功能上同WaitForMultipleObjects函數(shù)相似,只是多了一個(gè)喚醒掩碼。喚醒掩碼都是和消息有關(guān)的。此函數(shù)不但能夠?yàn)槭录却?,還能為特定的消息等待。其實(shí)這個(gè)函數(shù)就是專為等待消息而定義的。
MsgWaitForMultipleObjectsEx參數(shù)1為DWORD類型,參數(shù)2為L(zhǎng)PHANDLE類型,參數(shù)3為DWORD類型,參數(shù)4為DWORD類型,參數(shù)5為DWORD類型。此函數(shù)是MsgWaitForMultipleObjects函數(shù)的擴(kuò)展。將原來(lái)函數(shù)的參數(shù)3除掉,添加參數(shù)5為標(biāo)志。標(biāo)志有兩個(gè)值:0或MWMO_INPUTAVAILABLE。
如果一個(gè)線程既要執(zhí)行大量任務(wù)同時(shí)又要響應(yīng)用戶的按鍵消息,這兩個(gè)專用于等待消息的函數(shù)將非常有用。
和事件有關(guān)的函數(shù)有:
HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPTSTR lpName);
BOOL SetEvent(HANDLE hEvent );
BOOL PulseEvent(HANDLE hEvent);
BOOL ResetEvent(HANDLE hEvent);
HANDLE OpenEvent(DWORD dwDesiredAccess,
BOOL bInheritHandle,
LPCTSTR lpName );
事件對(duì)象是最常用的內(nèi)核模式同步方法。它包含一個(gè)使用計(jì)數(shù)和兩個(gè)BOOL變量。其中一個(gè)BOOL變量指定這個(gè)事件對(duì)象是自動(dòng)重置還是手工重置。另一個(gè)BOOL變量指定當(dāng)前事件對(duì)象處于有信號(hào)狀態(tài)還是無(wú)信號(hào)狀態(tài)。
函數(shù)CreateEvent創(chuàng)建一個(gè)事件對(duì)象,參數(shù)1必須為NULL,參數(shù)2指定是否手工重新設(shè)置事件對(duì)象的狀態(tài)。如果為FALSE,當(dāng)?shù)却瘮?shù)接到信號(hào)并返回后此事件對(duì)象被自動(dòng)置為無(wú)信號(hào)狀態(tài)。這時(shí)等待此事件對(duì)象的其它線程就不會(huì)被喚醒,因?yàn)槭录?duì)象已經(jīng)被置為無(wú)信號(hào)狀態(tài)。如果參數(shù)2設(shè)置為TRUE,當(dāng)?shù)却瘮?shù)接到信號(hào)并返回后事件對(duì)象不會(huì)被自動(dòng)置于無(wú)信號(hào)狀態(tài),其它等待此事件對(duì)象的線程都能夠被喚醒。用ResetEvent函數(shù)可以手工將事件對(duì)象置為無(wú)信號(hào)狀態(tài)。相反SetEvent函數(shù)將事件對(duì)象置為有信號(hào)狀態(tài)。PulseEvent函數(shù)將事件對(duì)象置為有信號(hào)狀態(tài),然后立即置為無(wú)信號(hào)狀態(tài),在實(shí)際開發(fā)中這個(gè)函數(shù)很少使用。OpenEvent函數(shù)打開已經(jīng)創(chuàng)建的事件對(duì)象,一般用于不同進(jìn)程內(nèi)的線程同步。在調(diào)用CreateEvent創(chuàng)建一個(gè)事件對(duì)象時(shí),傳遞一個(gè)名字給參數(shù)4,這樣在其它進(jìn)程中的線程就可以調(diào)用OpenEvent函數(shù)并指定事件對(duì)象的名字,來(lái)訪問(wèn)這個(gè)事件對(duì)象。
2006-12-09 17:50:44 來(lái)源:嵌入式資訊網(wǎng)
分享到: 二、同步
在多數(shù)情況下,線程之間難免要相互通信、相互協(xié)調(diào)才能完成任務(wù)。比如,當(dāng)有多個(gè)線程共同訪問(wèn)同一個(gè)資源時(shí),就必須保證一個(gè)線程正讀取這個(gè)資源數(shù)據(jù)的時(shí)候,其它線程不能夠修改它。這就需要線程之間相互通信,了解對(duì)方的行為。再有當(dāng)一個(gè)線程要準(zhǔn)備執(zhí)行下一個(gè)任務(wù)之前,它必須等待另一個(gè)線程終止才能運(yùn)行,這也需要彼此相互通信。實(shí)際開發(fā)過(guò)程中,線程間需要同步的情況非常多。Windows CE.NET給我們提供了很多的同步機(jī)制,熟練的掌握這些機(jī)制并合理運(yùn)用會(huì)使線程之間的同步更合理、更高效。進(jìn)程間的通信機(jī)制在下一篇文章中講解。
Windows CE.NET具有兩種運(yùn)行模式:用戶模式和內(nèi)核模式。并且允許一個(gè)運(yùn)行于用戶模式的應(yīng)用程序隨時(shí)切換為內(nèi)核模式,或切換回來(lái)。線程同步的有些解決辦法運(yùn)行在用戶模式,有些運(yùn)行在內(nèi)核模式?!禬indows核心編程》上說(shuō)從用戶模式切換到內(nèi)核模式再切換回來(lái)至少要1000個(gè)CPU周期。我查看過(guò)CE下API函數(shù)SetKMode的源碼,這個(gè)函數(shù)用于在兩種模式間切換,改變模式只需修改一些標(biāo)志,至于需要多少個(gè)CPU周期很難確定。但至少可以肯定來(lái)回切換是需要一定時(shí)間的。所以在選擇同步機(jī)制上應(yīng)該優(yōu)先考慮運(yùn)行在用戶模式的同步解決辦法。
1、互鎖函數(shù)
互鎖函數(shù)運(yùn)行在用戶模式。它能保證當(dāng)一個(gè)線程訪問(wèn)一個(gè)變量時(shí),其它線程無(wú)法訪問(wèn)此變量,以確保變量值的唯一性。這種訪問(wèn)方式被稱為原子訪問(wèn)?;ユi函數(shù)及其功能見(jiàn)如下列表:
函數(shù)參數(shù)和功能
InterlockedIncrement參數(shù)為PLONG類型。此函數(shù)使一個(gè)LONG變量增1
InterlockedDecrement參數(shù)為PLONG類型。此函數(shù)使一個(gè)LONG變量減1
InterlockedExchangeAdd參數(shù)1為PLONG類型,參數(shù)2為L(zhǎng)ONG類型。此函數(shù)將參數(shù)2賦給參數(shù)1指向的值
InterlockedExchange參數(shù)1為PLONG類型,參數(shù)2為L(zhǎng)ONG類型。此函數(shù)將參數(shù)2的值賦給參數(shù)1指向的值
InterlockedExchangePointer參數(shù)為PVOID* 類型,參數(shù)2為PVOID類型。此函數(shù)功能同上。具體參見(jiàn)幫助
InterlockedCompareExchange參數(shù)1為PLONG類型,參數(shù)2為L(zhǎng)ONG類型,參數(shù)3為L(zhǎng)ONG類型。此函數(shù)將參數(shù)1指向的值與參數(shù)3比較,相同則把參數(shù)2的值賦給參數(shù)1指向的值。不相同則不變
InterlockedCompareExchangePointer參數(shù)1為PVOID* 類型,參數(shù)2為PVOID類型,參數(shù)3為PVOID。此函數(shù)功能同上。具體參見(jiàn)幫助
2、臨界區(qū)
臨界區(qū)對(duì)象運(yùn)行在用戶模式。它能保證在臨界區(qū)內(nèi)所有被訪問(wèn)的資源不被其它線程訪問(wèn),直到當(dāng)前線程執(zhí)行完臨界區(qū)代碼。除了API外,MFC也對(duì)臨界區(qū)函數(shù)進(jìn)行了封裝。臨界區(qū)相關(guān)函數(shù):
void InitializeCriticalSection ( LPCRITICAL_SECTION );
void EnterCriticalSection ( LPCRITICAL_SECTION );
void LeaveCriticalSection ( LPCRITICAL_SECTION );
void DeleteCriticalSection ( LPCRITICAL_SECTION );
舉例如下:
void CriticalSectionExample (void)
{
CRITICAL_SECTION csMyCriticalSection;
InitializeCriticalSection (&csMyCriticalSection); ///初始化臨界區(qū)變量
__try
{
EnterCriticalSection (&csMyCriticalSection); ///開始保護(hù)機(jī)制
///此處編寫代碼
}
__finally ///異常處理,無(wú)論是否異常都執(zhí)行此段代碼
{
LeaveCriticalSection (&csMyCriticalSection); ///撤銷保護(hù)機(jī)制
}
}
MFC類使用更簡(jiǎn)單:
CCriticalSection cs;
cs.Lock();
///編寫代碼
cs.Unlock();
使用臨界區(qū)要注意的是避免死鎖。當(dāng)有兩個(gè)線程,每個(gè)線程都有臨界區(qū),而且臨界區(qū)保護(hù)的資源有相同的時(shí)候,這時(shí)就要在編寫代碼時(shí)多加考慮。
3、事件對(duì)象
事件對(duì)象運(yùn)行在內(nèi)核模式。與用戶模式不同,內(nèi)核模式下線程利用等待函數(shù)來(lái)等待所需要的事件、信號(hào),這個(gè)等待過(guò)程由操作系統(tǒng)內(nèi)核來(lái)完成,而線程處于睡眠狀態(tài),當(dāng)接收到信號(hào)后,內(nèi)核恢復(fù)線程的運(yùn)行。內(nèi)核模式的優(yōu)點(diǎn)是線程在等待過(guò)程中并不浪費(fèi)CPU時(shí)間,缺點(diǎn)是從用戶模式切換到內(nèi)核模式需要一定的時(shí)間,而且還要切換回來(lái)。在講解事件對(duì)象前應(yīng)該先談?wù)劦却瘮?shù)。等待函數(shù)有四個(gè)。具體參數(shù)和功能見(jiàn)下表:
函數(shù)參數(shù)和功能
WaitForSingleObject參數(shù)1為HANDLE類型,參數(shù)2為DWORD類型。此函數(shù)等待參數(shù)1標(biāo)識(shí)的事件,等待時(shí)間為參數(shù)2的值,單位ms。如果不超時(shí),當(dāng)事件成為有信號(hào)狀態(tài)時(shí),線程喚醒繼續(xù)運(yùn)行。
WaitForMultipleObjects參數(shù)1為DWORD類型,參數(shù)2為HANDLE * 類型,參數(shù)3為BOOL類型,參數(shù)4為DWORD類型。此函數(shù)等待參數(shù)2指向的數(shù)組中包含的所有事件。如果不超時(shí),當(dāng)參數(shù)3為FALSE時(shí),只要有一個(gè)事件處于有信號(hào)狀態(tài),函數(shù)就返回這個(gè)事件的索引。參數(shù)3為TRUE時(shí),等待所有事件都處于有信號(hào)狀態(tài)時(shí)才返回。
MsgWaitForMultipleObjects參數(shù)1為DWORD類型,參數(shù)2為L(zhǎng)PHANDLE類型,參數(shù)3為BOOL類型,參數(shù)4為DWORD類型,參數(shù)5為DWORD類型。此函數(shù)功能上同WaitForMultipleObjects函數(shù)相似,只是多了一個(gè)喚醒掩碼。喚醒掩碼都是和消息有關(guān)的。此函數(shù)不但能夠?yàn)槭录却?,還能為特定的消息等待。其實(shí)這個(gè)函數(shù)就是專為等待消息而定義的。
MsgWaitForMultipleObjectsEx參數(shù)1為DWORD類型,參數(shù)2為L(zhǎng)PHANDLE類型,參數(shù)3為DWORD類型,參數(shù)4為DWORD類型,參數(shù)5為DWORD類型。此函數(shù)是MsgWaitForMultipleObjects函數(shù)的擴(kuò)展。將原來(lái)函數(shù)的參數(shù)3除掉,添加參數(shù)5為標(biāo)志。標(biāo)志有兩個(gè)值:0或MWMO_INPUTAVAILABLE。
如果一個(gè)線程既要執(zhí)行大量任務(wù)同時(shí)又要響應(yīng)用戶的按鍵消息,這兩個(gè)專用于等待消息的函數(shù)將非常有用。
和事件有關(guān)的函數(shù)有:
HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPTSTR lpName);
BOOL SetEvent(HANDLE hEvent );
BOOL PulseEvent(HANDLE hEvent);
BOOL ResetEvent(HANDLE hEvent);
HANDLE OpenEvent(DWORD dwDesiredAccess,
BOOL bInheritHandle,
LPCTSTR lpName );
事件對(duì)象是最常用的內(nèi)核模式同步方法。它包含一個(gè)使用計(jì)數(shù)和兩個(gè)BOOL變量。其中一個(gè)BOOL變量指定這個(gè)事件對(duì)象是自動(dòng)重置還是手工重置。另一個(gè)BOOL變量指定當(dāng)前事件對(duì)象處于有信號(hào)狀態(tài)還是無(wú)信號(hào)狀態(tài)。
函數(shù)CreateEvent創(chuàng)建一個(gè)事件對(duì)象,參數(shù)1必須為NULL,參數(shù)2指定是否手工重新設(shè)置事件對(duì)象的狀態(tài)。如果為FALSE,當(dāng)?shù)却瘮?shù)接到信號(hào)并返回后此事件對(duì)象被自動(dòng)置為無(wú)信號(hào)狀態(tài)。這時(shí)等待此事件對(duì)象的其它線程就不會(huì)被喚醒,因?yàn)槭录?duì)象已經(jīng)被置為無(wú)信號(hào)狀態(tài)。如果參數(shù)2設(shè)置為TRUE,當(dāng)?shù)却瘮?shù)接到信號(hào)并返回后事件對(duì)象不會(huì)被自動(dòng)置于無(wú)信號(hào)狀態(tài),其它等待此事件對(duì)象的線程都能夠被喚醒。用ResetEvent函數(shù)可以手工將事件對(duì)象置為無(wú)信號(hào)狀態(tài)。相反SetEvent函數(shù)將事件對(duì)象置為有信號(hào)狀態(tài)。PulseEvent函數(shù)將事件對(duì)象置為有信號(hào)狀態(tài),然后立即置為無(wú)信號(hào)狀態(tài),在實(shí)際開發(fā)中這個(gè)函數(shù)很少使用。OpenEvent函數(shù)打開已經(jīng)創(chuàng)建的事件對(duì)象,一般用于不同進(jìn)程內(nèi)的線程同步。在調(diào)用CreateEvent創(chuàng)建一個(gè)事件對(duì)象時(shí),傳遞一個(gè)名字給參數(shù)4,這樣在其它進(jìn)程中的線程就可以調(diào)用OpenEvent函數(shù)并指定事件對(duì)象的名字,來(lái)訪問(wèn)這個(gè)事件對(duì)象。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- C語(yǔ)言多線程的詳細(xì)教程資料說(shuō)明 10次下載
- 關(guān)于進(jìn)程與線程的解析PDF文件資料
- windows應(yīng)用程序讀取進(jìn)程的內(nèi)存工具免費(fèi)下載 1次下載
- Windows CE 進(jìn)程、線程和內(nèi)存管理三 0次下載
- Windows CE 進(jìn)程、線程和內(nèi)存管理一 0次下載
- Windows CE 電源管理解析 0次下載
- 基于Windows 操作系統(tǒng)內(nèi)核驅(qū)動(dòng)的多核CPU 線程管理 0次下載
- 用多線程實(shí)現(xiàn)GPS接收機(jī)與PDA在Windows CE下的串口通 5次下載
- Windows CE詳解 67次下載
- 基于Windows CE的GPS串行通信的實(shí)現(xiàn)
- 基于Windows CE的數(shù)控軟件開發(fā)與實(shí)現(xiàn)
- 基于Windows CE嵌入式系統(tǒng)的智能小區(qū)廣告機(jī)的設(shè)計(jì)
- Windows線程、窗口與消息內(nèi)在機(jī)制研究
- Windows CE下多線程串口通信
- WINDOWS核心編程 (pdf下載)
- 線程是什么的基本單位 進(jìn)程與線程的本質(zhì)區(qū)別 622次閱讀
- 進(jìn)程和線程的概念及其區(qū)別 759次閱讀
- RTOS中的線程、進(jìn)程和協(xié)程詳解 1561次閱讀
- 關(guān)于Python多進(jìn)程和多線程詳解 678次閱讀
- Java多線程的用法 831次閱讀
- 程序中進(jìn)程和線程的區(qū)別 519次閱讀
- 進(jìn)程(線程)精細(xì)化控制中方法的使用 474次閱讀
- 什么是多線程 1097次閱讀
- 為什么在JVM中線程崩潰不會(huì)導(dǎo)致JVM進(jìn)程崩潰呢? 561次閱讀
- 基于Windows NT多線程實(shí)現(xiàn)智能蓄電池遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì) 1748次閱讀
- 如何管理Linux 的內(nèi)存分頁(yè)? 3713次閱讀
- 如何避免僵尸進(jìn)程,多線程的實(shí)現(xiàn)原理 8221次閱讀
- 如何選好多線程和多進(jìn)程 2880次閱讀
- Windows CE.NET 4.2下的串行通信技術(shù)講解 1596次閱讀
- 一文讀懂線程、進(jìn)程、程序之間的不同 1286次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多