
Windows
pc0de
面向工资编程
展开
-
C#中的线程之线程同步
写在前面 之前写过一篇博客,C#中的线程之Abort陷阱,最近比较忙,没时间写后面的内容,恰好今天偶然看到一个技术问答。线程抢占执行怎么使10-20连续输出 。回答该问题顺便写了几个例子,于是就有了这篇博客。问题描述 主要解决的问题是让两个线程代码能按照一定的顺序执行。题主抛出的代码是这样的:// 需要让打印出来的结果顺序输出 static void Main(string[] args)原创 2016-11-13 15:17:31 · 572 阅读 · 0 评论 -
vs2010在win10 64bit环境中卡顿的问题
vs2010在编辑状态使用Ctrl+C等快捷键总会卡顿那么0.5秒-1秒。非常影响编码效率。安装vs2010 sp1即可解决亲测可用地址原创 2017-06-04 06:21:23 · 1833 阅读 · 0 评论 -
使用HandleSpy定位托管代码句柄泄漏
引子 我们知道句柄泄漏原因多种多样,一般泄漏的对象主要是内核句柄 、 文件句柄、互操作句柄等。由于Framework的GC帮我们干了很多事情,所以很多C#程序员养成了吃饭后不洗碗的习惯,new出来的对象基本不考虑如何清理。一般的对象当然不用考虑,但是遇到需要释放的对象(如IO操作、内核对象创建等),忘了释放,那问题便产生了。环境说明本文所有演示均在win7 32位。需要安装原创 2017-05-21 18:10:33 · 1894 阅读 · 0 评论 -
开源的GIS - GMap.Net
推荐一款pc桌面的开源GIS开发库,觉得不错,满足GIS的基本要求,又不需要ArcGIS那么复杂的授权。说说优缺点吧:优点: 开源,使用无需商业授权源码结构清晰 支持多种离线、在线地图。 可扩展性强 安装方便(仅两个动态库)使用简单缺点: 仅支持.net平台 源码易读性不强(或许这个结论下得太早,大致看了结构比较清晰,但是单个的文件动辄几千行,真读不下去)需原创 2017-04-22 15:07:41 · 1162 阅读 · 0 评论 -
C#互操作之GC回收陷阱
起因其实这得从好多年前的一个BUG说起.那一年, 刚刚接触C++不久, 遇到的一个空引用之类的错误,反复调试却没有发现C++有任何的问题 单独跑C#测试也没有任何问题, 屏蔽C++的回调才找到出问题的地方。示例代码为了复现那个BUG的样子,我甩个DEMO出来。C++的代码是下面这样的,公布SetCallback函数,由C#设置回调地址,然后在C++非托管线程中不断调用该...原创 2017-03-23 21:12:03 · 1200 阅读 · 0 评论 -
互操作之DotnetFramework跨平台解决方案
首先说明下,这里“跨平台”是指Windows下的32位与64位平台,不涉及windows以外的平台。 以前的项目都是x86平台下运行, 自然也没有考虑过 DotnetFramework 跨多平台解决方案 这个问题。最近在实现不同平台运行的时候发现有些与我之前想法不符合的地方。于是便决定记录下来。平台dotnetframework 下配置解决方案平台有四种类型:Itanium 、...原创 2017-03-18 08:51:36 · 982 阅读 · 0 评论 -
C#互操作的内存溢出问题
c#调用C++DLL代码,发现了一个隐藏很深的问题。 危害很大,而且不易察觉。大概是申明c++的函数时候,有一个long类型的指针。在C#中我的申明成了这样:public extern void Method(ref uint para);最初怎么也没有发现这里面有什么问题,知道这个隐藏的问题暴露出来,把前面申明的一个变量改变了, 我才恍然大悟。uint test =原创 2013-10-09 00:24:02 · 3166 阅读 · 0 评论 -
vs调试c++源码无法加载断点
突然发现所有的c++项目在调试的时候加断点都会报错:”不能设置下面的断点。。。。。断点未能绑定”。起初以为是项目的设置问题,找了各种可能的原因, 包括pdb文件的设置、debug/Release设置,然后发现所有项目都是这样重启vs、重启电脑, 最后论坛求助, 发帖求助链接 都准备重装vs了。然后在vs设置中找到了罪魁祸首 工具-》选项-〉调试-〉编辑并继续-〉启用本机编辑原创 2014-12-07 20:05:18 · 3586 阅读 · 2 评论 -
VC使用动态库关于/MD与/MT的一个坑
项目中使用一个动态库,导出了一个方法void Test(string tt); 这个方法包含一个string类型的参数。在测试项目1中使用该动态库的Test导出方法,无论如何都会在释放参数tt的时候报错。当然,上面的定位到的结果是调试了一天的成果。最后实在没有办法,新建一个动态库项目与测试项目2,使用导出Test,却发现没有报错。然后将新建的动态库使用到测试项目1中,毫不犹豫地报错原创 2016-07-28 20:21:39 · 6877 阅读 · 0 评论 -
UDP丢包的问题
最近在忙着解决一个UDP丢包的问题。首先说说环境。网络环境很理想,万兆内网,主机之间使用一台光纤交换机连接并无任何中间节点;环境中的所有主机操作系统均为win2008Server x64 128G,CPU 32核 2.8GHz一台主机发送数据(通过UDP组播),其它主机接收发送数据的主机开启8路组播端口,每路发送数据很均匀为51.2MBps。(总数据量为8*51.2Mb原创 2016-07-28 21:57:48 · 2021 阅读 · 0 评论 -
C++删除空指针的一个坑
最近使用了项目公共库中看起来很稳定的一个消息队列类(前同事留下的),起初用得还挺好。后来程序中突然出现了内存暴涨的情况,最后定位下来是这个类的问题。随后花了一些时间定位出现问题的代码,其实在DEBUG时都没有找到问题代码,真正找到问题是凭着感觉在一堆代码里揪出了这样一句话:delete (void*)lParam; 灵感突现,这句应该有问题。当时在办公室,不能上网且手里又没有现成的参考资料,于是随原创 2016-12-03 07:24:52 · 1948 阅读 · 0 评论 -
C#中的线程之Abort陷阱
C#中的线程陷阱之Abort1.简介 C#中通常使用线程类Thread来进行线程的创建与调度,博主在本文中将分享多年C#开发中遇到的Thread使用陷阱。 Thread调度其实官方文档已经说明很详细了。本文只简单说明,不做深入探讨。 如下代码展示了一个线程的创建与启动 static void Main(string[] args) {原创 2016-10-23 21:28:28 · 22415 阅读 · 2 评论 -
让ZMQ在windows中成功支持PGM
为了弄明白ZMQ中的PGM协议,博主焦虑了不少。总结原因:1、ZMQ的中文文献太少;2、ZMQ在windows下的文献太少;3、国内不翻墙能访问的网站太少。遇到一个看起来不那么棘手的问题好了,言归正传,本文仅记录博主的艰辛历程。在官网下载好ZeroMQ源码后,编译好,然后按照文档写出Pub-Sub模式的测试代码。竟然在bind的时候就报错 void *publishe原创 2016-09-11 16:56:31 · 4963 阅读 · 14 评论 -
WaitForSingleObject的一个坑
事情是这样的: 一个一年前写的异步队列近期使用频率比较频繁。导致了N个BUG被挖出。一个不到260行的代码文件(加上注释),在捉BUG的过程中,几乎被我重构了一番。以前自以为与用得挺熟的多线程操作也被我发现了几个潜意识中的错误。最后在微软帮助文档中才找到了正确答案。。。。异步队列主要需要面临的问题是资源的竞争与同步,那么我们也最有可能在此犯错误。我写这个异步队列原创 2018-01-22 21:33:07 · 6285 阅读 · 2 评论