shuimanting520
这个作者很懒,什么都没留下…
展开
-
C#与C++混合编程及性能分析
概要: 众所周知,用C#做界面比C++开发效率要高得多,但在有性能问题的情况下不得不将部分模块使用C++,这时就需要使用C#与C++混合编程。本文给出了两种混合编程的方法以及性能对比。开发环境: ThinkPad T430 i5-3230M 2.6G 8G,Win7 64Bit,VS2013(C++开发设置),C++,C#都采用x64平台,性能验证使用Release版本。测试纯...转载 2019-12-03 13:38:21 · 690 阅读 · 0 评论 -
11.[个人]C++线程入门到进阶(11)----生产者消费者经典问题
继经典线程同步问题之后,我们来看看生产者消费者问题及读者写者问题。生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显然生产者和消费者之间必须保持同步,即不允许消费者到一个空的缓冲区转载 2017-04-25 23:32:07 · 494 阅读 · 0 评论 -
10.[个人]C++线程入门到进阶(10)----多线程经典面试题
1、基本概念 详见:线程和进程关系和区别、同步和互斥、进程间通信2、以下多线程对int型变量x的操作,哪几个不需要进行同步(D) A. x=y; B. x++; C. ++x; D. x=1; 详见:多线程二 多线程中的隐蔽问题揭秘3、多线程中栈与堆是公有的还是私有的 (C) A:栈公有, 堆转载 2017-04-25 23:30:48 · 2229 阅读 · 0 评论 -
9.[个人]C++线程入门到进阶(9)----线程与进程的区别
1、线程的基本概念 概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 好处 :(1)易于调度。 (2)提高并发性。通过转载 2017-04-25 23:29:16 · 373 阅读 · 0 评论 -
8.[个人]C++线程入门到进阶(8)----经典线程同步与互斥总结
前面《多线程二 多线程中的隐蔽问题揭秘》提出了一个经典的多线程同步互斥问题,这个问题包括了主线程与子线程的同步,子线程间的互斥,是一道非常经典的多线程同步互斥问题范例,后面分别用了四篇《多线程三 经典线程同步之关键段CS》《多线程四 经典线程同步之互斥量Mutex》《多线程五 经典线程同步之事件Event》《多线程六 经典线程同步之信号量Semaphore》转载 2017-04-25 23:28:15 · 375 阅读 · 0 评论 -
7.[个人]C++线程入门到进阶(7)----多线程中的隐蔽问题揭秘
为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录,每个用户登录用一个线程模拟,线程运行时会将一个表示计数的变量递增。程序在最后输出计数的值表示有今天多少个用户登录,如果这个值不等于我们启动的线程个数,那显然说明这个程序是有问题的。整个程序代码如下:[html] view plain copy转载 2017-04-25 23:26:37 · 378 阅读 · 0 评论 -
6.[个人]C++线程入门到进阶(6)----原子操作 Interlocked系列函数
为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录,每个用户登录用一个线程模拟,线程运行时会将一个表示计数的变量递增。程序在最后输出计数的值表示有今天多少个用户登录,如果这个值不等于我们启动的线程个数,那显然说明这个程序是有问题的。整个程序代码如下:[cpp] view plain copy转载 2017-04-25 23:24:54 · 1286 阅读 · 0 评论 -
5.[个人]C++线程入门到进阶(5)----线程同步之互斥量Mutex
1、互斥量是一个内核对象,它用来确保一个线程独占一个资源的访问。 互斥量与关键段的行为非常相似,并且互斥量可以用于不同进程中的线程互斥访问资源。使用互斥量Mutex主要将用到四个函数。下面是这些函数的原型和使用说明。1)第一个 CreateMutex函数功能:创建互斥量(注意与事件Event的创建函数对比)函数原型:HANDLE CreateMutex(转载 2017-04-25 23:22:43 · 334 阅读 · 0 评论 -
4.[个人]C++线程入门到进阶(4)----线程同步之事件Event
1、首先介绍下如何使用事件。 事件Event实际上是个内核对象,它的使用非常方便。下面列出一些常用的函数。1)第一个 CreateEvent函数功能:创建事件函数原型:HANDLE CreateEvent(LPSECURITY_ATTRIBUTESlpEventAttributes,BOOLbManualReset,BOOLbI转载 2017-04-25 23:20:46 · 446 阅读 · 0 评论 -
3.[个人]C++线程入门到进阶(3)----线程同步之关键段CS 与临界区
第一部分:线程同步之关键段1、本文首先介绍下如何使用关键段,然后再深层次的分析下关键段的实现机制与原理。定义关键段变量:CRITICAL_SECTION g_csThreadParameter, g_csThreadCode;关键段CRITICAL_SECTION一共就四个函数,使用很是方便。下面是这四个函数的原型和使用说明。1)函数原型:void Initia转载 2017-04-25 23:18:33 · 468 阅读 · 0 评论 -
1.[个人]C++线程入门到进阶(1)----概念
1.线程的基本概念、线程的基本状态及状态之间的关系? 线程,有时候被称为轻量级进程,是程序执行流的最小单元; 线程被分为两种,用户界面和工作流程(又称后台线程); 线程是进程的一个实体,是被系统独立调度和分派的基本单位; 线程的五种基本状态:新建、就绪、堵塞、运行、死亡; 就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机; 运行状态是指线程占有处原创 2017-04-25 23:08:44 · 537 阅读 · 0 评论 -
C++,MessageBox的常见用法
C++,MessageBox的常见用法 一 函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer; hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。 Text:欲显示的信转载 2016-09-07 07:32:38 · 4633 阅读 · 0 评论 -
Java的多线程:Thread类的Join()方法
[说明:刚接触多线程时,弄不明白Join()的作用,查阅了三本书,都不明不白。后来经过自己的一番试验,终于弄清了Join()的本质。大家看看我这种写法是否易懂,是否真的写出了Join()的本质,多提宝贵意见。] Thread类的Join()方法能够将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,线程A将插入线程B之前,直到线程A执行完毕后,才会继续转载 2016-09-06 08:06:12 · 424 阅读 · 0 评论 -
如何快速入门Windows编程
摘要:不少朋友向我征询学习Windows界面编程的方法,每一次,我总毫不犹豫的回答:先去学Windows SDK吧。——是的,如果你要以最快的速度学习Windows编程,那么,你需要从Windows SDK开始。假如你选择MFC或者Delphi/C++ Builder等等,虽然看似你快人一步,但是你仍然困惑着,总有一天,你还是得回头一点一滴了解Windows SDK,而此时,你已经走了不少冤枉路了转载 2016-09-06 08:04:27 · 770 阅读 · 0 评论 -
13.[个人]C++线程入门到进阶(13)----多线程同步内功心法--PV操作(上)
上面的文章讲解了在Windows系统下实现多线程同步互斥的方法,为了提高在实际问题中分析和思考多个线程之间同步互斥问题的能力,接下来将讲解PV操作,这也是操作系统中的重点和难点。本文将会先简要介绍下PV操作的来源和基本使用方法,然后再通过两道经典的计算机考研真题——放水果和安全岛来示范如何运用PV操作。先讲讲PV操作的起源和用法。1962年,荷兰学者Dijksrta在参与X8计算机转载 2017-04-25 23:39:13 · 1282 阅读 · 0 评论 -
12.[个人]C++线程入门到进阶(12)----读者写者问题&读写锁SRWLock
与上一篇《秒杀多线程第十篇 生产者消费者问题》的生产者消费者问题一样,读者写者也是一个非常著名的同步问题。读者写者问题描述非常简单,有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者在读文件时写者也不去能写文件。上面是读者写者问题示意图,类似于生产者消费者问题的分析过程,首先来找找哪些是属于“等待”情况。第一.写者要等到没有读者时才能去转载 2017-04-25 23:36:24 · 883 阅读 · 0 评论 -
14.[个人]C++线程入门到进阶(14)----双线程读写队列数据
本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902欢迎关注微博:http://weibo.com/MoreWindows 在《秒杀多线程系列》的前十五篇中介绍多线程的相关转载 2017-04-25 23:40:50 · 2721 阅读 · 0 评论 -
VS2017动态链接库(.dll)的生成与使用
这里以VS2017为例子,讲解一下动态链接库(.dll)的生成与使用。一、动态链接库(.dll)的生成1、打开:“文件”-“新建”-“项目”2、打开:“已安装”-“模板”-“Visual C++”-“Win32”-“Win32 控制台应用程序” 把文件“名称”加上,为自己的工程名称;把“位置”加上,为自己的工程所在位置;转载 2017-12-05 07:55:59 · 16739 阅读 · 2 评论 -
2.[个人]C++线程入门到进阶(2)----线程同步之信号量(semaphore)
1、首先来看看如何使用信号量 信号量Semaphore常用有三个函数,使用很方便。下面是这几个函数的原型和使用说明。第一个 CreateSemaphore函数功能:创建信号量函数原型:HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG l转载 2017-04-25 23:14:10 · 1768 阅读 · 0 评论 -
24.[个人]C++线程入门到进阶(24)----线程函数:GetCurrentThread
待更新原创 2017-04-26 23:16:01 · 1346 阅读 · 1 评论 -
23.[个人]C++线程入门到进阶(23)----线程函数:GetExitCodeThread
待更新原创 2017-04-26 23:15:22 · 646 阅读 · 0 评论 -
22.[个人]C++线程入门到进阶(22)----线程函数:TerminateThread
待更新原创 2017-04-26 23:14:39 · 732 阅读 · 0 评论 -
21.[个人]C++线程入门到进阶(21)----线程函数:ExitThread
待更新原创 2017-04-26 23:13:51 · 1692 阅读 · 0 评论 -
20.[个人]C++线程入门到进阶(20)----线程函数:OpenThread
待更新转载 2017-04-25 23:52:23 · 1265 阅读 · 0 评论 -
19.[个人]C++线程入门到进阶(19)----线程函数:ResumeThread
待更新转载 2017-04-25 23:51:31 · 1601 阅读 · 0 评论 -
18.[个人]C++线程入门到进阶(18)----线程函数:SuspendThread
待更新转载 2017-04-25 23:49:48 · 1402 阅读 · 0 评论 -
17.[个人]C++线程入门到进阶(17)----关键段,事件,互斥量,信号量的“遗留”问题
在《秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量》中对经典多线程同步互斥问题进行了回顾和总结,这篇文章对Windows系统下常用的线程同步互斥机制——关键段、事件、互斥量、信号量进行了总结。有网友问到互斥量能处理“遗弃”问题,事件和信号量是否也能处理“遗弃”问题。因此本文将对事件和信号量作个试验,看看事件和信号量能否处理“遗弃”问题。 一.什么是“遗弃”问题在《转载 2017-04-25 23:48:02 · 511 阅读 · 0 评论 -
16.[个人]C++线程入门到进阶(16)----线程函数:CreateThread与_beginthread
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex? 使用多线程其实是非常容易的,下面这个程序的主线程会创建了一个子线转载 2017-04-25 23:43:43 · 1152 阅读 · 0 评论 -
15.[个人]C++线程入门到进阶(15)----线程函数:WaitForSingleObject
等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。 WaitForSingleObject 函数DWORD WaitForSingleObject(HANDLE hObject, DWORD dwMilliseconds);第一个参数hObject标识一个能够支持被通知/未通知的内核对象(前面列出的任翻译 2017-04-25 23:42:08 · 620 阅读 · 0 评论 -
c++中的前向声明
整理于:http://blog.csdn.net/heyutao007/article/details/6649741http://blog.sina.com.cn/s/blog_68d90fdb0100yapr.html1. 前向声明好处1)不必要的#include 会增加编译时间. 2)混乱随意的#include可能导致循环#include,可能出现编译错误转载 2016-09-06 08:01:09 · 454 阅读 · 0 评论 -
使用VS2015创建和调用dll文件
使用VS2015创建和调用dll文件目录:1.创建一个工程:实现创建和生成dll文件的目的。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>创建项目: Win32->Win32项目,名称:MyDLL选择DLL (D) ->完成.原创 2016-09-15 17:41:47 · 40724 阅读 · 8 评论 -
[转]Java学习路线
第一部分从网上发现这篇文章,发现和我写的一篇关于《知识体系》的文章互相呼应,就转过来了。转自:http://tieba.baidu.com/f?kz=692446591怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西: 首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA)。转载 2016-07-24 17:18:01 · 854 阅读 · 0 评论 -
关于串口编程的(一)
版权声明:本文为博主原创文章,未经博主允许不得转载。所谓串口,也叫串行接口,即COM口,采用串行通讯方式(即数据一位一位的传送)的接口。也就是电脑后面D形9针插口。最近做了两个都和串口编程有关的功能,一个是不间断电源,一个是RS232型串口打印机。因为是串口所以主要的用法都不难,难点是对设备的相应命令的理解和使用上。因为不同类型的、不同厂家的设备命令是不同的,因为也没法总一个总结。转载 2016-05-13 06:39:34 · 567 阅读 · 0 评论 -
C语言结构体简单应用范例
结构体简单应用举例。#include struct student { int mid; int final; int hmws;};void main(void){ struct student sam = {85, 90, 88}; struct student tom = {93, 88, 91}; struct student *he = &原创 2016-05-12 07:42:09 · 1339 阅读 · 1 评论 -
JAVA学习方法,不错!关键是介绍了软件使用方法!
如何学习java菜鸟必备!老鸟也学习下!一、 JDK (Java Development Kit) JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握 JDK是学好Jav转载 2015-05-12 22:29:09 · 809 阅读 · 0 评论 -
8个华丽而实用的Java图表类库
阅读目录1、JFreeChart - 多功能Java图表类库2、ECharts-Java - Java版ECharts图表库3、Android图表绘制引擎 - AChartEngine4、Java快速报表组件- DynamicReports5、Android开源图表库 - MPAndroidChart6、Java图表类库 - jCharts7、Java智能图表类库 - JChartLib8翻译 2015-05-25 11:46:46 · 874 阅读 · 0 评论 -
学习C/C++的50个好网站
1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts --提供数以百计的C和C++脚本和程序。所有程序都分为不同的类别。 3、http://www.planetsourcecode.com/vb原创 2016-04-12 06:46:14 · 914 阅读 · 0 评论 -
C语言非阻塞式键盘监听
监听键盘可以使用C语言的字符输入函数,例如 getchar、getch、getche 等,我们会在《结合缓冲区谈谈C语言getchar()、getche()、getch()的区别》一节中重点讲解它们的区别。使用getche函数监听键盘的例子:#include #include int main(){ char ch; int i = 0; //循环监听,直到按原创 2016-05-09 23:11:27 · 15634 阅读 · 3 评论 -
C语言获取随机数
可能大家在编程的时候需要电脑来获取一些随机的反应,这个时候我们可以使用随机数,比较常见的是 rand() 函数,它可以随机的产生 0 ~ rand_max 的随机数。rand_max 是一个很大的数字,具体关系到IDE和数据类型,我们一般的需要不可能超出它的范围。下面是一个实例:#include #include int main(){ int a=rand();原创 2016-05-09 23:44:18 · 1949 阅读 · 0 评论 -
C语言空指针NULL以及void指针
空指针NULL在C语言中,如果一个指针不指向任何数据,我们就称之为空指针,用NULL表示。例如:int *p = NULL;注意区分大小写,null 没有任何特殊含义,只是一个普通的标识符。NULL 是一个宏定义,在stdio.h被定义为:#define NULL ((void *)0)(void *)0表示把数值 0 强制转换为void *类型,最外层的(原创 2016-05-10 07:12:12 · 22363 阅读 · 0 评论