线程互斥

////////////////////////////////////////////////////////////////
 HINSTANCE hInsta=::LoadLibrary("language\\XSelf.dll");
 if(hInsta!=NULL) AfxSetResourceHandle(hInsta);
/////////////////////////////////////////////////////////////////////////
 char pszExeName[32]="OnXDC XSelf";
 ::CreateMutex(NULL, TRUE, m_pszExeName);
 if (GetLastError()==ERROR_ALREADY_EXISTS) 
 {
  //Find our previous application‘s main window
  CWnd *pPrevWnd=CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);
  while (pPrevWnd)
  {
   //Does this window have the previous instance tag set?
   if (::GetProp(pPrevWnd->GetSafeHwnd(), m_pszExeName))
   {
    //found window,now set focus to the window
    //first restore window if it is currently iconic
    if (pPrevWnd->IsIconic())
     pPrevWnd->ShowWindow(SW_RESTORE);
    //set focus to main window
    pPrevWnd->SetForegroundWindow();
    //if window has a pop-up window, set focus to pop-up
    pPrevWnd->GetLastActivePopup()->SetForegroundWindow();
    return FALSE;
   }
   //Did not find window,get next window in list
   pPrevWnd = pPrevWnd->GetWindow(GW_HWNDNEXT);
  }
  return FALSE;
 }
时间: 2024-10-13 05:06:13

线程互斥的相关文章

线程间通信和线程互斥

线程间通信 1> 线程间通信分为两种 主线程进入子线程(前面的方法都可以) 子线程回到主线程 2> 返回主线程 3> 代码 这个案例的思路是:当我触摸屏幕时,会在子线程加载图片,然后在主线程刷新UI界面 视图布局我就不写了,大家自己来吧,线程间通信代码如下: #pragma mark - 添加响应方法触发创建子线程并加载数据 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

JAVA 并发编程-传统线程互斥技术(Synchronized)(三)

java线程互斥是为了保证,同一时刻最多只有一个线程执行该段代码.那么它的出现又是为了解决什么问题呢?账户存取款,在同一时间段只能让一个人进行操作. 下面来看一个简单实例(多线程带来的问题): public class TraditionalThreadSynchronized { /** * @param args */ public static void main(String[] args) { new TraditionalThreadSynchronized().init(); }

40 windows_40_Thread_Mutex 线程 - 互斥

windows_40_Thread_Mutex 线程 - 互斥 // windows_39_Thread_Mutex.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "windows.h" //互斥排队等候问题,谁先等候谁先执行 HANDLE g_hMutex = NULL; DWORD WINAPI ThreadProc1( LPVOID pParam ) { while (1) { //等候互斥量 Wai

线程互斥与同步

能解决下面的问题,基本上就能理解线程互斥与同步了. 子线程循环10次,主线程循环100次,接着子线程循环10,主线程循环100次.如此往复循环50次. 1 package cn.lah.thread; 2 3 public class TraditionalThreadCommunication { 4 5 public static void main(String[] args) { 6 7 final Business business = new Business(); 8 new Th

JAVA线程互斥问题

public class TraditionalThreadSynchonized { public static void main(String[] args) { final OutPuter output = new TraditionalThreadSynchonized().new OutPuter(); new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.slee

多线程之----线程互斥再续

本篇接上一篇 多线程之----线程互斥 不好意思 在上一篇中本来是要说线程互斥的,结果对比了下quartor和Timer,讲的quartor有点多了.这节我们重点说一下线程互斥. 按照如下的方式来学习线程互斥: 实现线程互斥的两种方法,sychronized wait/notify  lock(read/write).三种方式. 先开始第一种使用sychronized关键字.大家对这个应该不会陌生,因为我们写过很多线程安全或者说是线程互斥的例子,使用sychronized关键字应该是最主要的方式

线程分离与线程互斥

一.线程分离: 概述: 在任何一一个时间点上,线程是可结合的(joinable)或者是分离的(detached).一一个可结合的线程能够被其他线程收回其资源和杀死.在被其他线程回收之前,它的存储器资源(例如栈)是不释放的.相反,一一个分离的线程是不能被其他线程回收或杀死的,它的存储器 资源在它终止止时由系统自自动释放. 默认情况下,线程被创建成可结合的.为了避免存储器泄漏,每个可结合线程都应该要么被显示示地回收,即调用用pthread_join;要么通过调用用pthread_detach函数被分

Python之多线程:线程互斥与线程同步

一.锁在多线程中的使用:线程互斥 lock = threading.Lock()#创建一个锁对象 1.with lock: pass 和进程使用的方式相同 2.控制线程结束的时间 通过一个全局变量 # encoding=utf-8 import threading,time,Queue,random exitFlag = False def write(lock,queue): while exitFlag != True: with lock: data = random.randint(1,

3.传统线程互斥技术

线程安全问题可以用银行转账来解释 1 /** 2 * 传统的线程互斥技术 3 * @author LiTaiQing 4 */ 5 public class TraditionalThreadSynchronized { 6 7 public static void main(String[] args){ 8 new TraditionalThreadSynchronized().init(); 9 } 10 11 private void init(){ 12 /** 13 * 内部类访问局

27 Apr 18 GIL 多进程多线程使用场景 线程互斥锁与GIL对比 基于多线程实现并发的套接字通信 进程池与线程池 同步、异步、阻塞、非阻塞

27 Apr 18 一.全局解释器锁 (GIL) 运行test.py的流程: a.将python解释器的代码从硬盘读入内存 b.将test.py的代码从硬盘读入内存  (一个进程内装有两份代码) c.将test.py中的代码像字符串一样读入python解释器中解析执行 1 .GIL:全局解释器锁 (CPython解释器的特性) In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple na