MFC学习 多线程
#include <Windows.h>
#include <process.h>
#include <stdio.h> HANDLE hMutex; //互斥对象
void ProcessTask(void * args)
{
int a = ;
WaitForSingleObject(hMutex, INFINITE);
while ( a < )
printf("_beginthread %d\n", a++);
ReleaseMutex(hMutex);
//结束后会自动调用_endtrhead
}
unsigned int _stdcall ProcessTask2(void * args)
{
int a = ;
WaitForSingleObject(hMutex, INFINITE);
while ( a < )
printf("_beginthreadex %d\n", a++);
ReleaseMutex(hMutex); //如果不释放, 线程结束时, 系统也会释放
//结束后会自动调用_endtrheadex
return ;
}
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
int a = ;
WaitForSingleObject(hMutex, INFINITE);
while ( a < )
printf("CreateThread %d\n", a++);
ReleaseMutex(hMutex);
return ;
} int main()
{
hMutex = CreateMutex(NULL, FALSE, "tickets");
if(hMutex)
{
if(ERROR_ALREADY_EXISTS == GetLastError())
{
printf("one instance has exist\n");
system("pause");
return ;
}
}
_beginthread(ProcessTask, , );
_beginthreadex(NULL, , ProcessTask2, NULL, , );
Sleep();
DWORD threadId;
HANDLE hThread3 = CreateThread(, , ThreadProc, , , &threadId); //不建议使用, 在处理c库的时间类函数会内在泄漏大约70-80字节
//创建匿名互斥对象
//hMutex = CreateMutex(NULL, FALSE, NULL); //第二个参数参数初始化时当前线是否拥有互斥对象, 如果设置发TRUE, 可以用ReleaseMutex释放
//创建一个命名互斥对象可以判断实例是否在运行 CloseHandle(hThread3);
system("pause");
return ;
}
MFC学习 多线程的更多相关文章
- Java核心知识点学习----多线程中的阻塞队列,ArrayBlockingQueue介绍
1.什么是阻塞队列? 所谓队列,遵循的是先进先出原则(FIFO),阻塞队列,即是数据共享时,A在写数据时,B想读同一数据,那么就将发生阻塞了. 看一下线程的四种状态,首先是新创建一个线程,然后,通过s ...
- MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变
1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量: CToolBar m_toolbar;CImageList ...
- 转:MFC创建多线程实例
作者:http://blog.csdn.net/wangningyu/article/details/4404134 平时在MFC里使用多线程时其实是很方面的,因为微软提供了一个API让我们很方面的去 ...
- MFC关于多线程中传递窗口类指针时ASSERT_VALID出错的另类解决 转
MFC关于多线程中传递窗口类指针时ASSERT_VALID出错的另类解决 在多线程设计中,许多人为了省事,会将对话框类或其它类的指针传给工作线程,而在工作线程中调用该类的成员函数或成员变量等等. ...
- Android学习记录(5)—在java中学习多线程下载之断点续传②
在上一节中我们学习了在java中学习多线程下载的基本原理和基本用法,我们并没有讲多线程的断点续传,那么这一节我们就接着上一节来讲断点续传,断点续传的重要性不言而喻,可以不用重复下载,也可以节省时间,实 ...
- Java学习多线程第一天
内容介绍 Thread 线程创建 线程池 线程状态图 1 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序 ...
- MFC学习笔记1---准备工作
什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...
- MFC 学习笔记
MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...
- 孙鑫MFC学习笔记:15多线程
15 1.进程地址空间 2.线程 3.CreateThread创建一个线程 4.CloseHandle关闭线程句柄,要在不再使用线程句柄的时候关闭,递减线程引用计数 5.编辑框默认不支持多行,需要打开 ...
随机推荐
- 控制DIV占满屏幕
网上找了很多帖子,希望是CSS控制的,但是在bootstrap环境下, 控制方式上有点问题.达不到想要的效果. 项目中需要实现的效果: DIV区域占满当前窗口的高度.且在ctrl+鼠标滚轮调整窗口大小 ...
- Angular学习(4)- 数组双向梆定
示例: <!DOCTYPE html> <html ng-app="MyApp"> <head> <title>Study 4< ...
- mongodb基本语句使用
mongodb学习:##mongodb基础##数据库常用命令##用户相关##修改.添加.删除集合数据##条件操作符##创建表 ------------------------------------- ...
- PHP替换,只替换匹配到的第一个
function str_replace_limit($search, $replace, $subject, $limit=-1) { if (is_array($search)) { foreac ...
- 【maven】之使用jetty发布web项目
<plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin ...
- Python 模块学习:re模块
今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 R ...
- 最大流问题Ford-Fulkerson方法(转)
本篇主要讲解最大流问题的Ford-Fulkerson解法.可是说这是一种方法,而不是算法,因为它包含具有不同运行时间的几种实现.该方法依赖于三种重要思想:残留网络,增广路径和割.本文将会详细介绍这些内 ...
- Ignoring HTTPS certificates
Our Development setups won't have valid or trusted certificates. When do you want test our webserver ...
- Hibernate第一个程序
1. 下载资源:www.hibernate.org 2. 资源介绍hibernate-release-4.3.10.Final a) Documentation 相关文档 b) Lib 相关jar包 ...
- Red hat 5挂载U盘
装在虚拟机上的Linux 一.挂载U盘 ...