您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 执行例程 >

c 灰点相机开发例程

发布时间:2019-07-16 08:50 来源:未知 编辑:admin

  进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域的。进程可以理解为一个程序的基本边界。是应用程序的一个运行例程,是应用程序的一次动态执行过程。

  线程(Thread)是进程中的基本执行单元,是操作系统分配CPU时间的基本单位,一个进程可以包含若干个线程,在进程入口执行的第一个线程被视为这个进程的主线程。在用程序中,都是以Main()方法作为入口的,当调用此方法时系统就会自动创建一个主线程。线程主要是由CPU寄存器、调用栈和线程本地存储器(Thread Local Storage,TLS)组成的。CPU寄存器主要记录当前所执行线程的状态,调用栈主要用于维护线程所调用到的内存与数据,TLS主要用于存放线、多线程

  多线程的优点:可以同时完成多个任务;可以使程序的响应速度更快;可以让占用大量处理时间的任务或当前没有进行处理的任务定期将处理时间让给别的任务;可以随时停止任务;可以设置每个任务的优先级以优化程序性能。

  1、CPU运行速度太快,硬件处理速度跟不上,所以操作系统进行分时间片管理。这样,从宏观角度来说是多线程并发的,因为CPU速度太快,察觉不到,看起来是同一时刻执行了不同的操作。但是从微观角度来讲,同一时刻只能有一个线、目前电脑都是多核多CPU的,一个CPU在同一时刻只能运行一个线程,但是多个CPU在同一时刻就可以运行多个线程。

  然而,多线程虽然有很多优点,但是也必须认识到多线程可能存在影响系统性能的不利方面,才能正确使用线程。不利方面主要有如下几点:

  (2)多线程需要协调和管理,所以需要占用CPU时间以便跟踪线)线程之间对共享资源的访问会相互影响,必须解决争用共享资源的问题。

  当启动一个可执行程序时,将创建一个主线程。在默认的情况下,C#程序具有一个线程,此线程执行程序中以Main方法开始和结束的代码,Main()方法直接或间接执行的每一个命令都有默认线程(主线程)执行,当Main()方法返回时此线程也将终止。

  一个进程可以创建一个或多个线程以执行与该进程关联的部分程序代码。在C#中,线程是使用Thread类处理的,该类在System.Threading命名空间中。使用Thread类创建线程时,只需要提供线程入口,线程入口告诉程序让这个线程做什么。通过实例化一个Thread类的对象就可以创建一个线程。创建新的Thread对象时,将创建新的托管线程。Thread类接收一个ThreadStart委托或ParameterizedThreadStart委托的构造函数,该委托包装了调用Start方法时由新线程调用的方法,示例代码如下:

  Thread thread=new Thread(new ThreadStart(method));//创建线程

  thread.Start();                                                           //启动线程

  3、调用Thread实例的Start方法,标记该线程可以被CPU执行了,但具体执行时间由CPU决定

  Thread 中包括了多个方法来控制线程的创建、挂起、停止、销毁,以后来的例子中会经常使用。

  把bThread.IsBackground = true注释掉,运行结果:主线程执行完毕后(Main函数),程序并未结束,而是要等所有的前台线程结束以后才会结束。

  c#为同步访问变量提供了一个非常简单的方式,即使用c#语言的关键字Lock,它可以把一段代码定义为互斥段,互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在c#中,关键字Lock定义如下:

  如果你想保护一个静态变量(如互斥代码段在一个静态方法内部),一般使用类名就可以了

  从运行结果可以看出,两个线程同步访问共享资源,没有考虑同步的问题,结果不正确。

  产生错误的原因:textBox1是由主线程创建的,thread线程是另外创建的一个线程,在执行的是托管代码,C#强制要求这些代码必须是线程安全的,即不允许跨线程访问Windows窗体的控件。

  private void Form1_Load(object sender, EventArgs e) { //取消跨线程的访问 Control.CheckForIllegalCrossThreadCalls = false; }

  相信各位程序猿们都不会对插件太陌生,无论是firefox还是chrome还是其他的什么程序,插件都占到举足轻重的作用,是对程序功能的一种扩展。反正就是很有用的东西啦,可以很方便地扩展自己的程序。本渣最近准备用C#写一个自己用的工具箱,于是开始学习插件式程序的开发。经过将近一天时间,根据自己的理解总结了一些小小经验,仅供参考,大神勿喷首先我们来写接口dll,接口的作用就是连接插件和程序。

  C#委托的例程1.委托的引入为什么要使用委托呢,委托最直观的理解是所有的类中方法都具有相同的格式,来传递参数。例如设计一个计算加减乘除的委托程序2.项目的实施委托及事件的设计publicdelegatefloatDelegate(floati,floatj);//定义一个委托publicclassPublish{public...

  元帅的基本定义是:可见,Marshal主要是用来操作非托管内存的。此类中定义的大多数方法是提供给开发人员的托管和非托管编程模型之间的桥梁。例如, StringToHGlobalAnsi 方法将ANSI字符从指定的字符串(在托管堆中)复制到非托管堆中的缓冲区。该方法还分配适当大小的目标堆。System.Runtime。InteropServices Marshal所在的命名空间主要...

http://nicolashsiung.com/zhixinglicheng/247.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有