多线程
文章平均质量分 68
普通网友
这个作者很懒,什么都没留下…
展开
-
类成员函数创建线程
参考:http://blog.csdn.net/braveyly/article/details/3446472对于”在类里面的成员函数创建线程怎么搞“都有两三个月的疑问了,一直没想到什么好的方法。对于创建线程的调用函数归属问题不太清楚,也没什么时间做个实验。下面的实原创 2011-08-13 11:42:32 · 2409 阅读 · 0 评论 -
前台线程和后台线程的区别
参考自:http://msdn.microsoft.com/zh-cn/library/system.threading.thread.isbackground.aspx一个线程或者是后台线程或者是前台线程(二选一),在C#中,可以通过属性Thread.IsBackground来获取或设置。默认新创建的线程为前台线程!public bool IsBackground { get; se原创 2012-02-28 13:25:49 · 1398 阅读 · 0 评论 -
C# 对 Windows 窗体控件进行线程安全调用
参考自:http://msdn.microsoft.com/ZH-CN/library/SYSTEM.WINDOWS.FORMS.CONTROL.INVOKE.aspx如果使用多线程来提高 Windows 窗体应用程序的性能,则必须确保以线程安全方式调用控件。访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。原创 2012-02-28 16:54:26 · 4058 阅读 · 0 评论 -
C# 在子线程中创建不会阻塞执行的窗口
可以参考”C# 对 Windows 窗体控件进行线程安全调用“一文来看。在做网络连接程序的时候碰到一个问题:每当连接到来时,都创建一个新的接收线程,而该接收线程在接收到消息时,可以创建一个新的对话窗口,而该窗口不能阻塞该接收线程的下一轮消息的接收,而且该接收线程还要把接收到的消息显示在该窗口上Form.ShowDialog();方法弹出模态对话框,而模态对话框会阻塞后面代码的执行,导致原创 2012-02-24 14:04:56 · 11755 阅读 · 2 评论 -
多线程教程之二---线程间同步
当多个线程无限制的在同一段时间内访问同一资源时,有可能导致错误的结果的发生,例:#include #include long g_iNum1,g_iNum2;DWORD WINAPI SubThread(LPVOID lpParam){ for(int i=0; i<10000; i++) { g_iNum1+=1; g_iNum2+=2; } return 0;原创 2011-08-10 22:07:24 · 3664 阅读 · 0 评论 -
在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。
参考自:http://www.cnblogs.com/winzheng/archive/2008/12/02/1345656.html出错环境:多线程接收文件的时候,需要打开一个SaveFileDialog对象,并调用ShowDialog()方法出错代码:void threadProc(){ ... SaveFileDialog saveFileDlg = n原创 2012-03-06 13:44:51 · 19106 阅读 · 0 评论 -
Linux环境进程间通信(二): 信号(上)
转自:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进转载 2012-03-28 08:21:42 · 89 阅读 · 0 评论 -
Linux环境进程间通信(二):信号(下)
转自:http://www.hackbase.com/lib/2006-09-10/13316.html在信号(上)中,讨论了linux信号种类、来源、如何安装一个信号以及对信号集的操作。本部分则首先讨论从信号的生命周期上认识信号,或者宏观上看似简单的信号机制(进程收到信号后,作在信号(上)中,讨论了linux信号种类、来源、如何安装一个信号以及对信号集的操作。本部分则首先讨论从信号的生命转载 2012-03-28 08:23:22 · 94 阅读 · 0 评论 -
Linux环境进程间通信之信号机制(一)
转载:IBM linux文档库 中关于信号的介绍:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html一、信号及信号来源信号本质 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,转载 2011-08-12 16:31:10 · 616 阅读 · 0 评论 -
Linux下定时的实现
转载自:http://www.cnblogs.com/feisky/archive/2010/03/20/1690561.html使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器:ITIME_REAL,ITIMER_VIRTUAL,ITIME_PROF;另一个是转载 2011-08-12 15:19:40 · 727 阅读 · 0 评论 -
多线程(Windows API 以及 MFC支持的多线程)
转载:http://www.cppblog.com/amazon/archive/2008/11/27/67989.html32位Windows环境下的Win32 API提供了多线程应用程序开发所需要的接口函数,而相应的MFC类库封装了多线程编程的类,用户在开发时可根据应用程序的需要和特点选择相应的工具。以下将概括归纳基于WIN32 API和MFC的多线程技术,以及线程通信的实现方法。WI转载 2011-07-05 17:02:58 · 773 阅读 · 0 评论 -
伪句柄 pseudohandle 和句柄的转换
参考:1. http://www.cnblogs.com/Kernone/archive/2009/08/18/1549286.html2. http://blog.sina.com.cn/s/blog_4b226b9201011bu6.html在使用很多函数的时候,我们都需要获得一个对象的句柄,而某些函数,如GetCurrentProcess() / GetCurrentThre原创 2012-04-26 11:20:42 · 1663 阅读 · 0 评论 -
GetCurrentThread()获取当前线程句柄的陷阱
创建了一个结构体,其中有一个字段是线程句柄HANDLE当新创建的线程执行时,需要去获取结构体中关于该句柄的其他内容;因此,以HANDLE作为查找条件进行获取于是想起GetCurrentThread()方法来获取当前线程的句柄函数原型:HANDLE GetCurrentThread(void);返回值:A pseudohandle for the current原创 2012-04-26 10:29:00 · 9284 阅读 · 2 评论 -
c#线程池详解
转自:http://blog.sina.com.cn/s/blog_494305f30100ryw7.html在这里你可以学到Microsoft研究CLR实现线程池的原理机制,从而更灵活的处理CLR在实际代码应中线程池的问题,下面我们来看看吧。CLR教程之线程池的产生当 CLR 初始化时,其线程池中不含有线程。当应用程序要创建线程来执行任务时,该应用程序应请求线程池线程来执行任务。线程转载 2012-04-16 09:06:39 · 3662 阅读 · 0 评论 -
通过多线程为基于 .NET 的应用程序实现响应迅速的用户
转自:http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misMultithreading.mspx?mfr=true本文假设您熟悉 .NET、C# 和 Windows 窗体下载本文的代码: Multithreading.exe (106KB)摘要如果应用程序在转载 2011-12-20 10:13:30 · 1015 阅读 · 0 评论 -
项目中碰到的错误剖析
项目介绍:服务器Linux,客户端Windows,实现类似于QQ的功能注释:部分仍然是疑惑 1. 定义了一个消息头,格式如下//消息头typedef struct MsgHead{ char cSenderName[16]; char cRecverName[16]; int iMsgType; int msglen; char * data原创 2011-10-25 09:36:39 · 536 阅读 · 0 评论 -
多线程教程之一---线程的创建和参数设置
1. 线程的创建在程序中调用CreateThread函数可以创建一个线程:HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START原创 2011-08-10 20:59:29 · 3314 阅读 · 0 评论 -
WaitForSingleObject()函数、WaitForMultipleObject()函数
在多线程下面,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects。这两个函数都会等待Object被标为有信号(signaled)时才返回的。原创 2011-08-09 13:49:45 · 34033 阅读 · 2 评论 -
多线程教程之三---线程的死锁
多个线程间如果相互等待对方拥有的资源,将可能发生死锁。上一篇中我介绍了一种通过封闭Critical Section对象而方便的使用互斥锁的方式,文中所有的例子是两个线程对同一数据一读一写,因此需要让它们在这里互斥,不能同时访问。而在实际情况中可能会有更复杂的情况出现,就是多个线程访问同一数据,一部分是读,一部分是写。我们知道只有读-写或写-写同时进行时可能会出现问题,而读-读则可以同时进行,因原创 2011-08-10 22:09:29 · 1169 阅读 · 0 评论 -
Linux下通用线程池的构建
转自:http://blog.csdn.net/tingya/article/details/226614 这篇文章是04年的文章,比较老了,但思路不错(原文中缺少图,自己做了添加,代码也修改了一部分,如果觉得有问题可以一起讨论)另外,这篇文章的思路可以参考,但实际设计类的时候感觉不是太合理。有太多的相互引用,以至于看完代码之后感觉很混乱。本文给出了一个通用的线程池框架,该框架将与线程转载 2011-11-17 14:05:59 · 3077 阅读 · 0 评论 -
Linux下的C编程实战(四)--“线程”控制与“线程”通信编程
1.Linux“线程”Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。大家知道,进程是资源分配的单位,同一进程中的多个线程共享该进程的资源(如作为共享内存的全局变量)。Linux中所谓的“线程”只是在被创建的时候“克隆”(clone)了父进程的资源,因此,clone出来的进程表现为“线程”。因此,Linux“线程”这个概原创 2011-08-03 09:34:55 · 668 阅读 · 0 评论 -
Linux 的多线程编程的高效开发经验
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/IBM的文库里面确实有很多好东西!部分名词改成了我习惯的方式,建议看原文。背景Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁转载 2011-11-21 13:53:48 · 720 阅读 · 0 评论 -
C++中Event使用
转载自:http://www.cnblogs.com/yuanzfy/archive/2011/08/26/2154460.html之前线程同步用互斥锁Mutex或用户模式的CriticalSection等来进行同步,而且使用效果一直很好,直到最近遇到新问题,朋友推荐用事件去处理。但是对事件了解比较少,所以摘了篇文章看,另外自己做了下试验(所以代码不是转的哦)。概念:事件是用来同步地位转载 2011-11-19 08:24:49 · 9519 阅读 · 0 评论 -
线程池中线程的控制
版权所有,转载请与作者联系。在描述线程池的原理时,一般都会看到如下描述:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。刚开始的时候以为线程只执行任务就好,执行完之后用SuspendThread()函数挂起就行,下次有任务的时候再唤醒线程;后来发现,唤醒线原创 2011-11-21 12:01:51 · 1158 阅读 · 0 评论 -
Linux下多线程之条件变量的个人理解
这篇文章只讲述下条件变量pthread_cond_t的作用和理解,函数已在别的文章中给出。互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。(1)等待机制使用时,条件变量被用来阻塞一个线程:当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化;一旦其它的某个线程改变了条原创 2011-10-30 12:59:27 · 2606 阅读 · 1 评论 -
Linux下的pthread_cond_t变量的部分使用
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->Linux下的pthread_cond_t变量与Windows中的Event类似,都可以用于使子线程等待信号的变化,实现线程执行顺序的控制。区别在于:pthread_cond_signal()仅使信号瞬间变化,而Event的SetEvent()可以使Event处原创 2011-11-23 10:08:38 · 1615 阅读 · 0 评论 -
Windows下多线程常用函数
1.线程创建该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄。HANDLE CreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINElpStartAddress, LPVOID lpParameter, DWORDdwCrea原创 2011-11-03 16:13:14 · 2364 阅读 · 0 评论 -
windows 多线程编程的几点经验 (防止死锁)
转自:http://www.cnblogs.com/kex1n/archive/2011/08/05/2128335.html关于防止死锁方面的介绍比较少,但前5点经验肯定都是作者的心得和经验总结,因为我也遇到过,但还没有进行总结。1) 不要在线程函数体内操作MFC控件,不要再线程里面调用UpdateData函数更新用户界面,而应该尽量采用发送消息的方式,在主线程的消息响应函数转载 2011-11-04 08:11:48 · 820 阅读 · 0 评论 -
Windows线程同步API
转载自:http://www.cnblogs.com/devj/archive/2011/10/25/2223856.html神作,很全面。需要注意的是,部分内容不适合Vista以下版本的操作系统,不过我已经加了注释标志。本文主要总结创建、结束线程和WIN32 API提供的一些线程同步方法。同步方法包括用户态同步方式:InterLock、CriticalSection、SRWLock和转载 2011-11-04 09:00:52 · 2021 阅读 · 0 评论 -
Linux下的多线程编程
转载:http://fanqiang.chinaunix.net/a4/b8/20010811/0905001105.html(有修改)1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现转载 2011-08-12 21:13:37 · 553 阅读 · 0 评论