`
leonardleonard
  • 浏览: 820767 次
社区版块
存档分类
最新评论

C#多线程共享数据

阅读更多
在多线程编程中,我们经常要使用数据共享.C#中是如何实现的呢?很简单,只要把你要共享的数据设置成静态的就可以了.关键字static .如下:
static Queue q1=new Queue();
static int b=0;
在这里我定义了一个整形变量b和队列q1.
接下去就可以创建多线程代码了.如下:
MyThread myc;
Thread[] myt;
myt=new Thread[10];
myc=new MyThread();
for(int i=0;i<10;++i)
{
myt[i]=new Thread(new ThreadStart(myc.DoFun));
// System.Console.WriteLine("<<{0}>>",myt[i].GetHashCode());
myt[i].Start();
Thread.Sleep(1000);
}
你可能惊奇的发现这里使用了一个类实例myc.在起初的设计中我使用了MyThread数组,对于本例来说这没有什么关系,当线程要使用不同的操作时,那就要使用其他的类实例了.


以下是完整的代码:
using System;
using System.Threading;
using System.Collections;

namespace shareThread
{
class MyThread
{
static Queue q1=new Queue();
static int b=0;

public void DoFun()
{
lock(this)
{
++b;
q1.Enqueue(b);
}
System.Console.WriteLine("B:{0}--------------",b);
PrintValues( q1 );


}

public static void PrintValues( IEnumerable myCollection )
{
System.Collections.IEnumerator myEnumerator = myCollection.GetEnumerator();
while ( myEnumerator.MoveNext() )
Console.Write( "\t{0}", myEnumerator.Current );
Console.WriteLine();
}

}

/// <summary>
/// Class1 的摘要说明。
/// </summary>
class ClassMain
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
MyThread myc;
Thread[] myt;


myt=new Thread[10];
myc=new MyThread();
for(int i=0;i<10;++i)
{


myt[i]=new Thread(new ThreadStart(myc.DoFun));
// System.Console.WriteLine("<<{0}>>",myt[i].GetHashCode());
myt[i].Start(); //线程运行
Thread.Sleep(1000);//主线程睡眠
}
System.Console.Read();//等待完成,dos窗口不会马上关闭了.
}
}


 
分享到:
评论

相关推荐

    C#多线程互斥实例 多线程获取同一变量

    在这个"多线程互斥实例 多线程获取同一变量"的示例中,我们将探讨如何在多个线程中安全地访问共享资源,避免数据不一致性和竞态条件。 首先,我们需要理解多线程中的一些核心概念: 1. **线程**:线程是操作系统...

    C#多线程读写sqlite

    标题"**C#多线程读写sqlite**"涉及的主要知识点包括: 1. **多线程编程**:C#中的`System.Threading`命名空间提供了丰富的类和方法来创建和管理线程,如`Thread`类、`Task`类以及`ThreadPool`。通过多线程,程序...

    C#多线程编程实例实战.pdf

    C#多线程编程实例实战 C#多线程编程实例实战是指在C#语言中实现多线程编程的实例和实战经验。多线程编程是指在同一个进程中创建多个线程,以便提高程序的执行效率和响应速度。在C#语言中,可以使用Thread类和线程池...

    C# 多线程抓取数据(酒店)

    综上所述,"C# 多线程抓取数据(酒店)"项目涵盖了C#多线程编程、网络数据抓取、线程同步、异步编程、错误处理、数据存储等多个重要知识点,是提升开发者在并发处理和大数据采集方面技能的良好实践。通过学习和理解该...

    C# UDP多线程发送接收

    本教程将重点讲解如何利用C#实现多线程的UDP发送与接收。 一、UDP基础知识 1. UDP协议特点:无连接、不可靠、无拥塞控制,传输速度快。 2. UDP报文结构:包括源端口号、目标端口号、长度和校验和字段。 3. 使用C#的...

    C#多线程数据采集器

    总结,C#多线程数据采集器设计要考虑线程的创建与管理、同步与通信、异常处理等多个方面。通过合理利用多线程,可以大幅提升数据采集的效率,同时保证程序的稳定性和正确性。提供的压缩包中的“多线程采集C#源代码”...

    C#多线程执行

    一、C#多线程基础 C#中的多线程主要依赖于System.Threading命名空间,其中Thread类是线程的基本实现。创建一个新的线程可以使用Thread类的构造函数,传入一个委托作为线程启动时要执行的方法。例如: ```csharp ...

    winform 多线程处理数据

    - 为避免资源竞争,确保线程安全,特别是在多个线程访问共享数据时。 通过理解和应用这些概念,开发者可以构建出高效且用户体验良好的WinForm应用,即使在处理大量数据时也能保持界面的响应性。

    c#多线程编程实战(原书第二版)源码

    《C#多线程编程实战(原书第二版)源码》是一本深入探讨C#中多线程技术的专业书籍,其源码提供了丰富的实践示例,帮助读者掌握并发编程的核心概念和技术。在C#中,多线程是实现高性能、响应式应用程序的关键组成部分...

    C#多线程编程源码奉上

    在这个“C#多线程编程源码”中,我们可以深入学习如何在Visual Studio 2008环境下利用C#进行多线程操作,包括UI线程和异步调用的实现。 1. **多线程基础** - **线程创建**:C#中可以使用`System.Threading.Thread`...

    C#多线程排序例子

    本示例“C#多线程排序例子”聚焦于如何利用多线程来提升排序操作的速度。 首先,让我们了解什么是多线程。在计算机程序中,线程是程序执行的基本单元,每个线程都有自己的执行路径。在单线程环境中,代码按顺序执行...

    10.3_C#多线程监视器程序

    "10.3_C#多线程监视器程序"可能是一个示例项目,旨在教授如何在C#环境中管理和监控多个并发线程。让我们深入探讨一下这个主题,了解多线程的核心概念以及在C#中如何使用它们。 首先,多线程允许一个应用程序同时...

    C#多线程编程实战完整源码

    C#多线程编程是开发高效、响应迅速的软件应用的关键技术之一,尤其在现代计算环境中,多核处理器和并发处理的需求日益增加。本资源"《C#多线程编程实战》完整源码"提供了丰富的实例,适用于学习和实践C#中的多线程...

    C# 多线程编程实例实战

    C# 多线程编程实例实战 本文探索了 C# 多线程编程实例实战,特别是单个写入程序/多个阅读程序的线程同步问题。在这种情况下,写入程序需要修改共享资源,而阅读程序需要读取数据。为了解决这个问题,需要满足两个...

    c#多线程参考手册 多线程

    C#多线程是.NET框架中的一个重要特性,它允许开发者在同一时间内执行多个任务,从而提高应用程序的效率和响应性。在处理大量数据、实现并发操作或进行后台处理时,多线程技术尤其有用。本参考手册将深入探讨C#中的多...

    C#多线程(.pdf)

    ### C#多线程(.pdf)知识点解析 #### 一、多线程基本概念 - **进程**: 当一个程序开始运行时,它就是一个进程。进程包括运行中的程序以及该程序所使用的内存和系统资源。 - **线程**: 线程是程序中的一个执行流,每...

    C#多线程系列教程

    本文将基于“C#多线程系列教程”这一主题,深入探讨多线程的基本概念、原理以及在C#中的具体应用,旨在为初学者、开发人员以及对多线程技术感兴趣的程序员提供全面、系统的知识体系。 ### C#多线程基础 #### 1. 多...

    C#多线程实例

    这个“C#多线程实例”压缩包很可能包含了一系列关于如何在C#中实现和管理多线程的代码示例。下面将详细阐述多线程的基本概念、应用场景以及C#中实现多线程的关键技术。 一、多线程基础 1. **线程定义**:线程是...

    C# 中的 多线程 C# 多线程

    在C#编程语言中,多线程是一种强大的技术,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应性。多线程是现代计算环境中不可或缺的一部分,尤其是在处理大量数据、进行复杂计算或者需要实现并发操作的...

    C# 多线程资料集合

    本资源集合提供了一套全面的C#多线程学习资料,包括编程实例实战、线程技术详解以及多线程相关概念的阐述,特别适合于想要深入理解和掌握C#线程编程的开发者。 首先,C#中的线程允许程序员同时执行多个任务,这被...

Global site tag (gtag.js) - Google Analytics