现在位置: 首页 > 多线程编程
2013-07-08 22:02 工业·编程 ⁄ 共 6544字 暂无评论
多线程编程的问题,对于大多数程序员来说,都是一个绕不开的坎。在编了一些程序后,我也来谈谈自己的感受。我并不想把本文写成一篇教课书式的文章,而期望是一个工程的入门指引,能够覆盖到大部分工程技巧和解决问题的思路,但又不过于深入而难于理解。因此我会从逻辑层次和实现层次两个部分来讲述多线程编程,更深入的讨论我把它们列在了在参考资料中,这可不是一篇文章能够讨论完的。 1. 逻辑层次     ...
阅读全文
2013-06-07 05:01 工业·编程 ⁄ 共 734字 暂无评论
    多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。     每个任务一个线程会使系统限入"过度切换"和"过度开销"的泥潭。基于上面的技术,线程池将频繁创建和销毁线程所带来的开销分摊到了每个具体执行的任务上,执行的次数越多,则分摊到每个任务上的开销就越小。当然,如果线程创建销毁所带来的开销与...
阅读全文
    在这篇文章中,我们会为大家详细推出C++ CreateThread参数的具体应用方法,以帮助大家能够从中获得一些帮助,提高编程效率。那么接下来就让我们一起来看看C++ CreateThread参数的正确使用方法吧。     项目是VS2005下的,用到了CreateThread函数,看到网上说不应该调用CreateThread,而应该使用_beginthreadex。因为刚好用到了,就还是写一下CreateThread中参数的使用方法。 先定义要传递的C...
阅读全文
2013-03-13 21:08 工业·编程 ⁄ 共 3676字 暂无评论
    Windows的对话框是获取信息输入的主要手段,增加线程则是获得更好UI响应的重要方式。由于Windows在处理对话框时进行线程调度的特殊性,如果不对此加以特别注意,增加线程可能不能带来UI响应的改善。 1         跨线程创建对话框 1.1      需求 有这样的应用场景:创建非模态对话框后需要马上做些耗时的工作,而同时又希望能够立刻在对...
阅读全文
2013-02-17 11:53 工业·编程 ⁄ 共 1573字 暂无评论
/******************************************************/ //一个程序作为一个进程来运行的时候   //里面可能会有几个线程在同时工作   //普通的全局变量在一个进程内唯一      //所有线程看到的是同一个值       //使用__declspec(thread)方式声明的全局变量就不是这样         //它对于一个线程是唯...
阅读全文
创建一个线程看上去很简单,但其实没那么简单。windows下创建线程函数一般有3个:CreateThread、_beginthread和AfxBeginThread,这3个到底有啥区别?什么时候应该用哪个? 这个问题我之前一直不是很明白,直到这次回顾线程相关知识的时候,才仔细了解了下,现在记录下来,也供他人参考。 CreateThread 这个是Win32 API,一般不推荐使用,因为如果你需要使用CRT(标准C运行时库)的函数,比如malloc之类的,很可能会导致内存泄露之...
阅读全文
2013-01-23 06:46 工业·编程 ⁄ 共 1819字 暂无评论
一、Msdn种Sleep解读 This function suspends the execution of thecurrent thread for a specified interval. 终止线程指定的时间间隔。 void Sleep( DWORD dwMilliseconds); Parameters dwMilliseconds Specifies the time, in milliseconds, forwhich to suspend execution. A value of zero causes the thread to relinquish theremainder of its time slice to any other thread of equal priority that is readyto run. I...
阅读全文
你还再为怎么判断一个程序是否结束而苦恼吗?或许你在想可以用一个循环每隔几秒来判断一次这个进程是否结束,但是这样会有问题,如果间隔时间太短就会很占CPU 资源,间隔时间太长又不能及时知道程序已经结束,或许有人马上就想到WaitForSingleObject 函数,不错Win32 API 提供的这个函数能很好的解决这个问题,但是在使用WaitForSingleObject 函数的过程中很容易忽略一些问题。小弟不才,在这里略说一二。 先看一下函数的原形 D...
阅读全文
WaitForSingleObject函数在线程同步中最为常见,以至于没有太多的话题还需要展开, 那就写一下容易被忽略的细节,引用书中一个例子 [cpp] view plaincopy DWORD dw = WaitForSingleObject(hProcess, 5000)  switch(dw)  {  case WAIT_OBJECT_0:  break;  case WAIT_TIMEOUT:  break;  case WAIT_FAILED:  break;  }  hProcess是进程句柄,进城同属内核对象,在...
阅读全文
Microsoft Windows 平台中两种最常用的锁定方法为 WaitForSingleObject 和 EnterCriticalSection 。WaitForSingleObject 是一个过载 Microsoft API ,可用于检查和修改许多不同对象(如事件、作业、互斥体、进程、信号、线程或计时器)的状态。Wa itForSingleObject 的一个不足之处是它会始终获取内核的锁定,因此无论是否获得锁定,它都会进入特权模式 ( 环路 0) 。此 API 还进入 Windows 内核,即使指定的超时为 0 ,亦如此。...
阅读全文