摘要:
临界区(Critical Section) 保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的。 临界区包含两个操作原语: EnterCriticalSection() 进入临界区 LeaveCriticalSection() 离开临界区 EnterCriticalSection()语句执行后代码将进入临界区以后无论发生什么,必须确保与之匹配的 L 阅读全文
摘要:
本人上学时间做的一个计算器作业.发上来以备以后查看,写的方法有点幼稚,见笑.XIAN MACRO XIANSHI;显示大写字母 LEA BX,XIANSHI LOCAL C1,C2C1: CMP [BX],'A' JS C2 CMP [BX],'Z' JNS C2 MOV DL,[BX] MOV AH,2 INT 21H INC BX JMP C1C2: MOV DL,"!" MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H ENDMXIAN1 M 阅读全文
摘要:
互斥量(Mutex)CreateMutex:创建一个互斥量 HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, // pointer to security attributes BOOL bInitialOwner, // flag for initial ownership LPCTSTR lpName // pointer to mutex-object name ); Parameters lpMutexAttributes [in, optional] A pointer to a SECURITY_ATTRIBU 阅读全文
摘要:
//========================================================================//TITLE:// 在非主线程中创建窗口//AUTHOR:// norains//DATE:// Saturday 29-December-2007//Environment:// VS2005 + SDK-WINCE5.0-MIPSII //======================================================================== 很多朋友都会有过这样的经历,为什么在主线程中创建窗口且窗口工 阅读全文
摘要:
下面的代码我调试了将近一个星期,你能够看出什么地方出了问题吗?线程函数: DWORD WINAPI ThreadProc() { while(!bTerminate) { // 从一个链表中读取信息并且插入到CListCtrl中 // CListCtrl的句柄是通过线程参数传递进来的 for(;;) { ReadInfoFromList(); InsertToCListCtrl(); } } }主线程中使用CreateThread 启动线程。当想终止子线程时,在主线程中: bTerminate = TRUE; WaitForSingleObject(threadHandle, INFINITE 阅读全文
摘要:
使用多线程技术可以显著地提高程序性能,本文就讲讲在程序中如何使用工作线程,以及工作线程与主线程通讯的问题。一 创建线程 使用MFC提供的全局函数AfxBeginThread()即可创建一个工作线程。线程函数的标准形式为 UINT MyFunProc(LPVOID );此函数既可以是全局函数,也可以是类的静态成员函数。之所以必须是静态成员函数,是由于类的非静态成员函数,编译器在编译时会自动加上一个this指针参数,如果将函数设置为静态的成员函数,则可以消除this指针参数。如果想在线程函数中任意调用类的成员变量(此处指的是数据成员,而不是控件关联的成员变量),则可以将类的指针作为参数传递给线程函 阅读全文