7线程的调度优先级和亲缘性(6)

2019-05-18 23:22

// Add the Below Normal priority class

n = ComboBox_AddString(hwndCtl, TEXT(\

ComboBox_SetItemData(hwndCtl, n, BELOW_NORMAL_PRIORITY_CLASS); }

n = ComboBox_AddString(hwndCtl, TEXT(\

ComboBox_SetItemData(hwndCtl, n, IDLE_PRIORITY_CLASS);

ComboBox_SetCurSel(hwndCtl, nNormal);

// Initialize thread relative priorities

hwndCtl = GetDlgItem(hwnd, IDC_THREADRELATIVEPRIORITY);

n = ComboBox_AddString(hwndCtl, TEXT(\

ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_TIME_CRITICAL);

n = ComboBox_AddString(hwndCtl, TEXT(\

ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_HIGHEST);

n = ComboBox_AddString(hwndCtl, TEXT(\

ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_ABOVE_NORMAL);

nNormal = n = ComboBox_AddString(hwndCtl, TEXT(\ ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_NORMAL);

n = ComboBox_AddString(hwndCtl, TEXT(\

ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_BELOW_NORMAL);

n = ComboBox_AddString(hwndCtl, TEXT(\

ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_LOWEST);

n = ComboBox_AddString(hwndCtl, TEXT(\

ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_IDLE);

ComboBox_SetCurSel(hwndCtl, nNormal);

Edit_LimitText(GetDlgItem(hwnd, IDC_SLEEPTIME), 4); // Maximum of 9999

return(TRUE); }

/////////////////////////////////////////////////////////////////////

//////////

void Dlg_OnCommand (HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {

switch (id) { case IDCANCEL:

PostQuitMessage(0); break;

case IDC_PROCESSPRIORITYCLASS:

if (codeNotify == CBN_SELCHANGE) {

SetPriorityClass(GetCurrentProcess(), (DWORD) ComboBox_GetItemData(hwndCtl, ComboBox_GetCurSel(hwndCtl))); }

break;

case IDC_THREADRELATIVEPRIORITY:

if (codeNotify == CBN_SELCHANGE) {

SetThreadPriority(GetCurrentThread(), (DWORD) ComboBox_GetItemData(hwndCtl, ComboBox_GetCurSel(hwndCtl))); }

break;

case IDC_SUSPEND:

// To avoid deadlock, call EnableWindow before creating // the thread which calls SuspendThread. EnableWindow(hwndCtl, FALSE);

HANDLE hThreadPrimary;

DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hThreadPrimary,

THREAD_SUSPEND_RESUME, FALSE, DUPLICATE_SAME_ACCESS); DWORD dwThreadID;

CloseHandle(chBEGINTHREADEX(NULL, 0, ThreadFunc, hThreadPrimary, 0, &dwThreadID)); break; } }

/////////////////////////////////////////////////////////////////////

//////////

INT_PTR WINAPI Dlg_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

switch (uMsg) {

chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog); chHANDLE_DLGMSG(hwnd, WM_COMMAND, Dlg_OnCommand); }

return(FALSE); }

///////////////////////////////////////////////////////////////////////////////

int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {

HWND hwnd =

CreateDialog(hinstExe, MAKEINTRESOURCE(IDD_SCHEDLAB), NULL, Dlg_Proc);

BOOL fQuit = FALSE;

while (!fQuit) { MSG msg;

if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {

// IsDialogMessage allows keyboard navigation to work properly. if (!IsDialogMessage(hwnd, &msg)) {

if (msg.message == WM_QUIT) {

fQuit = TRUE; // For WM_QUIT, terminate the loop. } else {

// Not a WM_QUIT message. Translate it and dispatch it. TranslateMessage(&msg); DispatchMessage(&msg); }

} // if (!IsDialogMessage()) } else {

// Add a number to the listbox static int s_n = -1; TCHAR sz[20];

wsprintf(sz, TEXT(\

HWND hwndWork = GetDlgItem(hwnd, IDC_WORK);

ListBox_SetCurSel(hwndWork, ListBox_AddString(hwndWork, sz));

// Remove some strings if there are too many entries while (ListBox_GetCount(hwndWork) > 100) ListBox_DeleteString(hwndWork, 0);

// How long should the thread sleep

int nSleep = GetDlgItemInt(hwnd, IDC_SLEEPTIME, NULL, FALSE); if (chINRANGE(1, nSleep, 9999)) Sleep(nSleep); } }

DestroyWindow(hwnd); return(0); }

//////////////////////////////// End of File //////////////////////////////////

//Microsoft Developer Studio generated resource script. //

#include \

#define APSTUDIO_READONLY_SYMBOLS

///////////////////////////////////////////////////////////////////////////// //

// Generated from the TEXTINCLUDE 2 resource. //

#include \

/////////////////////////////////////////////////////////////////////////////

#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32

///////////////////////////////////////////////////////////////////////////// //

// Dialog //

IDD_SCHEDLAB DIALOGEX 0, 0, 209, 70

STYLE DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION |

WS_SYSMENU

EXSTYLE WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE CAPTION \FONT 8, \BEGIN

LTEXT \ COMBOBOX

IDC_PROCESSPRIORITYCLASS,84,4,72,80,CBS_DROPDOWNLIST | WS_TABSTOP

LTEXT \ COMBOBOX

IDC_THREADRELATIVEPRIORITY,84,18,72,76,CBS_DROPDOWNLIST | WS_TABSTOP

LTEXT \ EDITTEXT IDC_SLEEPTIME,84,34,32,14,ES_NUMBER PUSHBUTTON \

LISTBOX IDC_WORK,160,4,48,60,NOT LBS_NOTIFY |

LBS_NOINTEGRALHEIGHT | LBS_NOSEL | WS_TABSTOP END

///////////////////////////////////////////////////////////////////////////// //

// DESIGNINFO //

#ifdef APSTUDIO_INVOKED


7线程的调度优先级和亲缘性(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新课改背景下小学语文教师课堂教学评价语言探究-教育文档

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: