
windows多线程
文章平均质量分 67
tkp2014
这个作者很懒,什么都没留下…
展开
-
句柄
句柄的作用:源于内存管理机制的问题---虚拟地址,转载 2014-09-22 10:33:47 · 454 阅读 · 0 评论 -
互斥量的同步(Mutex)
#include #include /*** 互斥对象属于内核对象,能够确保线程拥有对单个资源的互斥访问权* 互斥对象包含一个使用数量、一个线程ID、一个计数器* ID用于标识系统中哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数*//* 启用两个线程模拟售票窗口,销售100张票 */DWORD WINAPI MyProc1(LPVOID lp);DW原创 2015-01-20 22:15:57 · 528 阅读 · 0 评论 -
多线程的顺序执行(2)
/************************************************************************** 开启3个线程,它们的线程ID分别是A、B、C,每个线程自己的ID在屏幕上打印10遍* 输出结果的顺序为:ABC,例如,ABCABC.....** 思路:使用信号量进行子线程之间互斥*****************************原创 2014-12-23 09:51:59 · 472 阅读 · 0 评论 -
解码单个视频及保存yuv数据到文件中
// 解码单路视频,并保存解码后的yuv数据到文件中去// cudaDecode.lib是静态库文件,本程序实例展示如何调用此库文件相应接口实现解码功能#include "iostream"#include #include "windows.h"#include "../header/cudaDecodeInterface.h"//#pragma comment(li原创 2015-06-19 09:10:36 · 1633 阅读 · 0 评论 -
一个线程往缓冲区buffer写数据,另外三个读数据,读和写要分开
#include #include #include using namespace std;// write线程写了之后,read1、read2、read3才能读,且只有3个线程都读完之后,write函数才能向buffer中写CRITICAL_SECTION cs;typedef struct { HANDLE h1; HANDLE h2; HANDLE h3; HAN原创 2015-06-22 17:57:32 · 3561 阅读 · 2 评论 -
一个线程写完数据后,另外三个线程按顺序读取
#include #include #include using namespace std;// write线程写了之后,read1、read2、read3才能读,且只有3个线程都读完之后,write函数才能向buffer中写CRITICAL_SECTION cs;typedef struct { HANDLE h1; HANDLE h2; HANDLE h3; HAN原创 2015-06-22 18:05:27 · 1066 阅读 · 0 评论 -
死锁问题
// 模拟车站售票问题,两个窗口交替售票,这里使用关键段做线程的同步// 死锁问题#include #include #include using namespace std;CRITICAL_SECTION g_hSectionA;CRITICAL_SECTION g_hSectionB;int g_ticket = 100;void seller1(LPVOID原创 2015-06-22 22:32:26 · 482 阅读 · 0 评论 -
Windows三种内存分配机制
1)堆2)虚拟内存3)内存映射文件原创 2015-07-12 15:52:11 · 653 阅读 · 0 评论 -
Windows进程间通信方式
1 Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。 多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API) 提供了大量支持应用程序间数据共享转载 2015-07-11 15:48:38 · 620 阅读 · 0 评论 -
Windows进程内部堆的操作
/*** 进程默认堆操作,进程多个其他堆创建*/#include #include int main(){ SYSTEM_INFO si; GetSystemInfo(&si); HANDLE hHeap1; hHeap1 = HeapCreate( HEAP_NO_SERIALIZE, si.dwPageSize*2, //堆初始大小为 2页 si.dwPa原创 2015-07-12 14:43:46 · 492 阅读 · 0 评论 -
多线程 -- 信号量和互斥量
信号量内核对象信号量内核对象用来进行资源计数,它包含一个使用计数、最大资源数、当前资源计数。最大资源数表示信号量可以控制的最大资源数量,当前资源数表示信号当前可用的资源数量。设想一个场景:需要开发一个服务器进程,最多同时运行5个线程来响应客户端请求,应该设计一个“线程池”。最开始的时候,5个线程都应该在等待状态,如果有一个客户端请求到来,那么唤醒其中的一个线程以处理客户端请求,如果转载 2014-12-27 20:00:38 · 696 阅读 · 0 评论 -
多线程 -- 线程栈
预备知识众所周知,线程在初始化时,系统会为其分配线程栈,用于局部变量、函数调用时的参数等。在开始讨论前,先交代一些背景知识。栈:一种先入后出的数据结构,push和pop是它典型的操作,对应“入栈”和“出栈”的术语。系统内存的分配机制:简单的说包括“预订”和“调拨”两个过程。预订并不真正分配物理存储器,只是对进程虚拟地址空间中的内存进行“预分配”,以使得这块内存不至于被当前进程的转载 2014-12-27 20:06:30 · 1009 阅读 · 0 评论 -
线程对象与线程的区别
线程对象是线程类的实例对象,它是通过继承thread类或者通过实现runnable接口得到。 线程对象封装了线程的一些信息,java中的所有的代码(具体说,是所有类的方法)都是在某个线程上运行的。一个线程对象的方法可以被任何线程运行,对象和类只是oop的概念的组织方式,在内存中,这些对象其实是一些内存块,里面保存了数据和可运行的方法,而线程就是这些方法的一个执行路径,线程可以跨越多个对象来执行不同转载 2014-09-16 21:18:45 · 641 阅读 · 0 评论 -
多线程的顺序执行(1)
题目:编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推my_typedef.h#ifndef MY_TYPEDEF_H#define MY_TYPEDEF_Htypedef char CHAR;typedef signed char INT8;原创 2014-12-22 17:42:55 · 596 阅读 · 0 评论 -
多线程编程资源链接
// VC多线程编程http://www.cppblog.com/Lee7/archive/2008/08/15/58952.html原创 2014-12-27 11:26:13 · 395 阅读 · 0 评论 -
多线程 -- 原子访问
多线程同步的难题我们知道单核处理器同一时刻只能处理一条指令,操作系统通过时间片调度实现了多任务和多线程。在这个过程中,操作系统随时会中断一个线程(这种中断是以指令为单位的),也就是说完全有可能在一个不确定的时候,线程用完了时间片,控制权交给了另一个线程,另一个线程用完时间片,控制权转回,但是这一进一出有可能一个被共享的全局变量的值已经变了!这也许会带来灾难性的后果,也许不会。因此,站在系统转载 2014-12-27 20:11:28 · 576 阅读 · 0 评论 -
多线程 -- 线程基础
进程与线程理解线程是至关重要的,每个进程至少有一个线程,进程是线程的容器,线程才是真正的执行体,线程必然在某个进程的上下文中运行。进程拥有惰性,如果进程中所有的线程都已结束,那么进程也就没有存在的必要了。一个进程由如下两部分组成:1、一个进程地址空间;2、一个进程内核对象一个线程由如下两部分组成:1、一个线程栈;2、一个线程内核对象线程的开销要比进程少很多,所以在解转载 2014-12-27 20:02:50 · 443 阅读 · 0 评论 -
多线程 -- 关键段
关键段关键段(Critical Section)是一小段代码,它在执行之前需要独占对一些共享资源的访问权。这种方式可以让多行代码以“原子方式”对资源进行操控。这里的原子方式,指的是代码知道除了当前线程之外,没有其他任何线程会同时访问该资源。当然,系统仍然可以暂停当前线程去调度其他线程。但是,在当前线程离开关键段之前,系统是不会去调度任何想要访问同一资源的其他线程的。下面的代码展示了转载 2014-12-27 20:04:47 · 569 阅读 · 0 评论 -
多线程 -- Slim 读/写锁
Slim读/写锁SRWLock的目的和关键段相同,对一个资源进行保护,构造了一段“原子访问”的代码,不让其他线程访问它。但与关键段不同的是SRWLock允许区分想要读取资源值的线程和想要写入资源值的线程,因为仅仅读取资源是不会破坏数据的,下面是Slim读/写锁的简单用法:123456789转载 2014-12-27 20:08:05 · 654 阅读 · 0 评论 -
多线程 -- 可等待的计时器内核对象
可等待的计时器内核对象下面的函数CreateWaitableTimer用以创建一个计时器内核对象:12345HANDLE WINAPI CreateWaitableTimer( __in_opt LPSECURITY_ATTRIBUTES lpTimerAttributes,转载 2014-12-27 20:09:55 · 672 阅读 · 0 评论 -
多线程 -- 等待函数、事件内核对象
用内核对象进行线程同步内核对象:Windows操作系统使用内核对象来管理进程、线程、文件等诸多种类的大量资源。内核对象的创建通常是通过Windows API,比如CreateThread将创建一个线程内核对象,并返回一个内核对象句柄。内核对象实际上是一小块内存,其中包括了引用计数、安全性描述等信息,操作系统通过这一小段内存来管理对应的内核资源。内核对象的实际内存地址并非句柄所展示的,它们在转载 2014-12-27 19:54:38 · 679 阅读 · 0 评论 -
同步和锁
为了避免多个线程同时读写同一个数据而产生不可预料的结果,需要将各个线程对同一个数据的访问同步(synchronization)。所谓同步,既是指一个线程访问数据未结束的时候,其他线程不得对同一个数据进行访问,如此,对数据的访问被原子化了。对于允许多个线程并发访问的资源,多元信号量简称信号量(Semaphore),它是一个很好的选择,一个初始化值为N的信号量允许N个线程并发访问,线程访问原创 2015-07-14 21:45:39 · 382 阅读 · 0 评论