多线程
文章平均质量分 76
Charle-Chen
这个作者很懒,什么都没留下…
展开
-
多线程编程要点
线程是进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等。一个进程内的所有线程使用同一个地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行以及什么时候执行线程。线程有优先级别,优先权较低的线程必须等到优先权较高的线程执行完后再执行。在多处理器的机器上,调度程序可将多个线程放到不同的处理器上去运行,这样转载 2012-08-20 14:40:58 · 661 阅读 · 0 评论 -
多线程入门教程(四)线程间通信
简介 线程之间通信的两个基本问题是互斥和同步。 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。 线程互斥是指对于共享的操作系统资源(指的是广义的"资源",而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访问时的排它性。当有若干个线程都要使用某一共享转载 2012-08-18 09:41:03 · 1980 阅读 · 0 评论 -
多线程入门教程(五)MFC的多线程
1、创建和终止线程 在MFC程序中创建一个线程,宜调用AfxBeginThread函数。该函数因参数不同而具有两种重载版本,分别对应工作者线程和用户接口(UI)线程。 工作者线程CWinThread *AfxBeginThread( AFX_THREADPROC pfnThreadProc, //控制函数 LPVOID pParam, //传递给控制转载 2012-08-18 09:41:57 · 2882 阅读 · 0 评论 -
更多的多线程学心得
http://blog.chinaunix.net/uid/9532036/frmd/90529.html原创 2012-08-20 15:09:25 · 1062 阅读 · 0 评论 -
C++ 多线程编程总结
在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:l 并发l 异步l 缓存下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。1任务队列1.1 以生产者-消费者模型设计任务队列 生产者-消费者模型是人们非常熟悉的模型,比如在某个服务器程序中,当User数据被逻转载 2012-08-24 15:37:37 · 1243 阅读 · 0 评论 -
c++CreateEvent函数在多线程中使用及实例
CreateEvent函数详解参见本博客文章:c++中CreateEvent函数解析(2)HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset, BOOL bInitialState,LPCSTR lpName);bManualReset:TRUE,使用Res转载 2012-08-24 15:42:03 · 6456 阅读 · 0 评论 -
c++多线程同步(1)
此篇讨论一下c++中的线程同步。线程同步方式: 临界区 事件 互斥量 信号量为什么要线程同步? 从之前的讨论及实际的项目中,可以看到线程同步给我们带来了很多便利性,但是多线程也同时给我们带来了很多麻烦:一方面,在开发调试阶段带来了很大的难度;另一方面,则需要考虑资源访问的一致性原则。因为在程序中使用多线程的时转载 2012-08-24 15:42:26 · 2009 阅读 · 0 评论 -
Windows 下 C/C++ 多线程编程入门参考范例
[c-sharp] view plaincopy#include #include using namespace std; DWORD WINAPI myThread(LPVOID argv);//声明一个线程函数 int main(int argc, char *argv[]) { string s;转载 2012-08-24 15:44:19 · 9985 阅读 · 1 评论 -
VC++多线程编程实例讲解(入门)
VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好.一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThread转载 2012-08-24 15:23:46 · 3016 阅读 · 2 评论 -
C++多线程编程简单实例
C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD SIZE_T dwStackSize,转载 2012-08-24 15:26:32 · 1718 阅读 · 0 评论 -
C++ 多线程编程实例
核心提示:从网上搜集来的非常基础的C++多线程实例,刚入门的可以看看,希望能有所帮助。Cpp代码 //这是2个线程模拟卖火车票的小程序 #includewindows.h #includeiostream.h DWORDWINAPIFun1Proc(LPVOIDlpParameter);//threaddat... 从网上搜集来的非常基础的C++多线程实例,刚入门的可以看看,希望能转载 2012-08-24 15:33:06 · 13271 阅读 · 6 评论 -
C++多线程编程例子 Demo 关键代码段 临界区 实现线程同步
DWORD WINAPI Fun1Proc(LPVOID lParam);DWORD WINAPI Fun2Proc(LPVOID lParam);int balance = 110;//账户余额[最少10元保底]CRITICAL_SECTION critical;//代码临界区/* 运用关键代码端[临界区]实现线程间同步 */void main(){InitializeCrit转载 2012-08-24 15:36:38 · 4108 阅读 · 1 评论 -
c++多线程(一)
多线程的简介线程---操作系统调度的最小单位。线程包含在进程中,是进程中实际运行的单位。一个进程中可以同时运行多个线程,每个线程可以执行不同的任务,这就是所谓的多线程。同一进程中的多个线程将共享该进程中的全部系统资源,如虚拟地址空间、文件描述符和信号处理等,但是同一个进程中的多个线程都有各自的调用栈、寄存器环境和线程本地存储。 对于单核(单CPU)系统来说,即便处理器一转载 2012-08-24 15:38:29 · 1062 阅读 · 0 评论 -
c++多线程(二)
多线程实例二此实例演示采用CreateThread函数在主线程中创建一个线程,并且向创建的线程中传递一个参数。由于采用MFC编程,自动生成的代码比较多,还是列出部分实现多线程的代码。线程函数:[cpp] view plaincopyvoid ThreadProc(int count) { for (转载 2012-08-24 15:40:16 · 1324 阅读 · 0 评论 -
c++多线程(三)
多线程实例4此实例演示你的机器最多能创建多少个线程。此实例程序相当简单。线程函数:[cpp] view plaincopyvolatile BOOL m_bRUN = TRUE; //表示是否能继续添加线程 DWORD WINAPI ThreadProc(LPVOID lpParam) { while转载 2012-08-24 15:40:42 · 1640 阅读 · 0 评论 -
多线程入门教程(三)线程控制
WIN32线程控制主要实现线程的创建、终止、挂起和恢复等操作,这些操作都依赖于WIN32提供的一组API和具体编译器的C运行时库函数。 1.线程函数 在启动一个线程之前,必须为线程编写一个全局的线程函数,这个线程函数接受一个32位的LPVOID作为参数,返回一个UINT,线程函数的结构为:UINT ThreadFunction(LPVOID pParam)转载 2012-08-18 09:40:17 · 1401 阅读 · 0 评论 -
多线程用法-1
初步实例介绍CreateThread的用法:带有参数的用法:#include "windows.h"#include "stdio.h"void Scan(char* str){ printf("%s",str);}void Start(){ char* s="NBA YAO YEAR!/n"; HANDLE hThread=CreateThrea转载 2012-08-20 14:49:07 · 704 阅读 · 0 评论 -
C++多线程(6)对象互斥
多线程之线程同步Mutex (功能与CriticalSection相同,保证某一时刻只有一个线程能够访问共享资源,但是是内核对象,所以访问速度要比CriticalSection要慢,但是增加了等待超时的功能,使用时可以根据实际的情况选择其一)一 Mutex 互斥对象(mutex)内核对象能够确保线程拥有对单个资源的互斥访问权。实际上互斥对象是因此而得名的。互斥对象包含一个使用数量,一转载 2012-08-20 15:00:27 · 699 阅读 · 0 评论 -
多线程入门系列(一):内容简介
前 言:多线程简介从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易。因转载 2012-08-18 09:38:31 · 814 阅读 · 0 评论 -
c++多线程学习7信号
多线程同步之Semaphore (主要用来解决生产者/消费者问题)一 信标Semaphore信标内核对象用于对资源进行计数。它们与所有内核对象一样,包含一个使用数量,但是它们也包含另外两个带符号的3 2位值,一个是最大资源数量,一个是当前资源数量。最大资源数量用于标识信标能够控制的资源的最大数量,而当前资源数量则用于标识当前可以使用的资源的数量。为了正确地说明这个问题,让我们来转载 2012-08-20 15:02:44 · 617 阅读 · 0 评论 -
c++多线程8event
一 Event 在所有的内核对象中,事件内核对象是个最基本的对象。它们包含一个使用计数(与所有内核对象一样),一个用于指明该事件是个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是未通知状态的布尔值。 事件能够通知一个操作已经完成。有两种不同类型的事件对象。一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时,等待该事件的所转载 2012-08-20 15:03:37 · 576 阅读 · 0 评论 -
学习笔记——多线程
#include DWORD WINAPI ThreadFunc(LPVOID); //线程声明//产生一个线程。创建成功返回handle,被称为核心对象。否则返回FLASE。 可以调用GetLastError()获知原因//返回线程句柄 HANDLE hThrd = CreateThread(NULL,转载 2012-08-20 14:42:53 · 494 阅读 · 0 评论 -
多线程入门教程(六)综合实例
本章我们将以工业控制和嵌入式系统中运用极为广泛的串口通信为例讲述多线程的典型应用。 而网络通信也是多线程应用最广泛的领域之一,所以本章的最后一节也将对多线程网络通信进行简短的描述。 1.串口通信 在工业控制系统中,工控机(一般都基于PC Windows平台)经常需要与单片机通过串口进行通信。因此,操作和使用PC的串口成为大多数单片机、嵌入式系统领域工程师必须具备的能力转载 2012-08-18 09:43:06 · 1817 阅读 · 0 评论 -
多线程入门教程(二)基本概念
引言 从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。 理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易。转载 2012-08-18 09:39:26 · 1442 阅读 · 0 评论 -
C/C++ 多线程学习心得
这是我第一次写技术博客, 有点紧张(呵呵...~), 我就从写学习多线程编程的心得开始吧. 个人觉得在学习多线程编程之前最好先了解进程和线程的关系, 然后在学习线程工作方式的过程中动手写个(我是从抄开始的)多线程的小程序, 会对学习多线程有很大的帮助, 否则只有理论是很抽象的. 在学习多线程编程之前, 必须先知道什么是 线程函数, 线程函数就是另一个线程的入口函数. 默认情况下一个我们转载 2012-08-20 14:34:40 · 1210 阅读 · 0 评论 -
C++多线程学习2
// beginthread.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "beginthread.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char TH转载 2012-08-20 14:57:43 · 628 阅读 · 0 评论 -
c++多线程3
一 Critical Sections1) 因为Critical Sections不是内核对象,所以只能用来统一进程内线程间的同步,不能用来多个不同进程间的线程的同步。2) 如果在Critical Sections中间突然程序crash或是exit而没有调用LeaveCriticalSection,则结果是改线程所对应的内核不能被释放,该线程成为死线程。3) 要比其他的内核转载 2012-08-20 14:58:41 · 750 阅读 · 0 评论 -
C++多线程4互锁函数
多线程同步之WIN API互锁函数 (可以避免使用CriticalSection或Mutex)一 互锁函数 互锁函数的家族十分的庞大,可以查看msdn(http://msdn2.microsoft.com/en-us/library/ms686360.aspx)以InterLocked开始的函数都是户数函数。使用互锁函数的优点是:他的速度要比其他的CriticalSection,转载 2012-08-20 14:59:20 · 2927 阅读 · 0 评论 -
c++线程学习5等待函数
WaitForSingleObject的用法 WaitForSingleObject的用法DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds);参数hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果时间是有信号状态返回WAIT_O转载 2012-08-20 15:00:00 · 1157 阅读 · 0 评论 -
c++多线程编写网络聊天室程序(socket)
[html] view plaincopy先版本信息调用函数 [html] view plaincopyAfxSocketInit [html] view plaincopy [html] view plaincopy1 [html] view plainco转载 2012-08-20 15:17:01 · 5765 阅读 · 0 评论 -
C/C++四种退出线程的方法
退出线程可以有四种方法:1.线程函数的return返回(最好这样): 其中用线程函数的return返回, 而终止线程是最安全的, 在线程函数return返回后, 会清理函数内申请的类对象, 即调用这些对象的析构函数. 然后会自动调用 _endthreadex()函数来清理 _beginthreadex(...)函数申请的资源(主要是创建的tiddata对象).2.调用 _endthr转载 2012-08-20 14:35:43 · 835 阅读 · 0 评论 -
c++多线程(四)
线程间通信主线程创建子线程必定会为主线程分担一部分工作,这样不可避免的会在这两个线程之间存在消息传递渠道,因此主线程和子线程之间要进行通信。 下面介绍几种通信方式:全局变量:由于同一进程的各个线程之间共享该进程的资源,因此,解决线程间通信最简单的方式是使用全局变量。对于标准类型的全局变量,使用validate修饰符,不让编译器对其优化,因为编译器如果对其转载 2012-08-24 15:41:07 · 1393 阅读 · 0 评论