`
zheyiw
  • 浏览: 1017133 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

多线程与静态函数

    博客分类:
  • C#
阅读更多
最近项目用到很多的静态函数,所以想确定一下静态函数被多个线程同时调用的时候是否能实现并行
测试原理如下: 开多个现场, 传入参数如果参数是偶数,就在静态函数中堵塞线程5秒,如果参数是奇数就跳过. 最终根据返回参数可以判断静态变量在被多个函数同时调用时到底是串行执行还是并行执行
先说结论: 是并行的

测试代码如下:

private void simpleButton1_Click(object sender, EventArgs e)
{
	for (int i = 0; i < 5; i++)
	{
		//开启五个线程
		Thread thread1 = new Thread(ThreadA);
		thread1.Start((object)i);
	}
}

private void ThreadA(object a)
{
	int type = (int)a;
	ParallelTest(type);
	//更新界面
	BeginInvoke(new Del_RefreshRankingType(RefreshRankingType), type);
}

public static void ParallelTest(int type)
{
	if (type % 2 == 0)
	{
		//如果参数为偶数堵塞5秒
		Thread.Sleep(5000);
	}
}

public delegate void Del_RefreshRankingType(int type);

public void RefreshRankingType(int type)
{
	memoEdit1.Text = memoEdit1.Text + "\r\n" + "Thread: " + type;
}

最后得到的结果是:
Thread: 1
Thread: 3
Thread: 0
Thread: 2
Thread: 4

而且1,3线程是立即返回数据,0,2,4是五秒后
所以:
一个简单的静态函数,只包含一下局部变量,不涉及线程间参数时是并行访问的

分享到:
评论

相关推荐

    Qt 多线程文件传输静态编译版本

    本文将深入探讨Qt如何实现多线程文件传输以及静态编译的相关知识。 首先,让我们了解什么是多线程。在单线程环境中,程序一次只能执行一个任务。而多线程允许程序同时处理多个任务,比如在一个线程中进行文件读取,...

    可重入函数与线程安全函数

    在多线程编程中,可重入函数与线程安全函数是两个非常重要的概念。了解这两个概念对于编写高质量、高性能的并发程序至关重要。 #### 可重入函数定义 可重入函数是指在多线程环境下能够被多个线程同时安全调用的...

    CreateThread创建多线程与单线程比较

    第二种是启动多线程,不同模式下启动函数不同,mfc与API与WIN32下面注意点也是有区别的! VC启动一个新线程的三种方法,有需要的朋友可以参考下。 第一种AfxBeginThread() 用AfxBeginThread()函数来创建一个新...

    易语言多线程支持库2.1含静态库

    易语言多线程支持库2.1是一款专为易语言设计的库文件,它提供了在易语言编程环境中实现多线程功能的能力。多线程是现代计算机程序设计中一个重要的概念,它允许程序同时执行多个任务,提高了程序的运行效率和响应性...

    Android JNI多线程编程回调JAVA函数

    本话题将深入探讨如何在Android中使用JNI进行多线程编程,并实现native方法对Java函数的回调。 1. **JNI基础知识**: - JNI是Java平台的一部分,为Java应用程序提供了与本地代码交互的能力。开发者可以通过JNI在...

    C#中静态构造函数的几点说明介绍

    静态构造函数与实例构造函数并存不会冲突,因为它们分别作用于类和实例层面。 5. 执行次数: 静态构造函数在整个应用程序域中只执行一次,无论类的实例创建多少次。 6. 继承特性: 静态构造函数不被子类继承。...

    MFC多线程编程

    通过调用AfxBeginThread函数或者在派生类的静态成员函数中创建线程对象,可以启动多线程。 在多线程编程中,还需要考虑线程同步问题,如互斥量、信号量和事件等机制,确保数据安全和线程间的协调。例如,使用...

    stm32单片机多线程实例

    3. **多线程创建**:使用RT-Thread API创建线程,定义线程入口函数和优先级。每个线程都有自己的堆栈空间和独立的执行路径。 4. **线程同步与通信**:学习如何使用信号量、互斥锁、邮箱、消息队列等机制实现线程间...

    多线程动态链接库.rar

    在IT领域,多线程和网络编程是两个关键的概念,特别是在开发高效、响应迅速的应用程序时。本资源“多线程动态链接库.rar”显然提供了一个用于学习这两者结合的平台,尤其适合初学者入门。 多线程是操作系统中并发...

    利用静态变量对函数访问次数计数.zip

    值得注意的是,静态变量在多线程环境下需要额外的同步机制,因为多个线程可能同时访问和修改它,导致数据不一致。通常,可以使用互斥锁(mutex)来确保线程安全。例如: ```cpp #include std::mutex accessMutex;...

    嵌入式软件开发技术:第5章 嵌入式Linux多线程编程.ppt

    嵌入式Linux多线程编程 嵌入式Linux多线程编程是嵌入式系统开发中的一种重要技术,能够提高系统的效率和响应速度。本章节将详细介绍嵌入式Linux多线程编程的基本概念、线程的创建、同步和互斥、线程属性、多线程...

    C++多线程编程入门教程

    C++多线程编程入门教程 本文将对C++多线程编程进行详细的介绍,从多线程概念的定义到实际的编程实现。同时,文章还将对Linux和Windows平台下的多线程实现进行比较,并提供了相关的示例代码。 一、多线程概念 在...

    vc多线程编程简单介绍vc多线程编程简单介绍vc多线程编程简单介绍

    多线程是指一个进程中可以存在多个执行流,每个线程都独立地执行各自的代码,它们共享同一块内存空间,包括全局变量和静态变量。通过多线程,程序可以同时进行多个操作,如后台数据处理、用户界面更新等,提高程序的...

    线程安全函数

    理解线程安全函数的重要性,并在多线程程序设计中正确使用线程安全的函数或自定义线程安全的函数,是避免竞态条件、确保程序稳定性和可靠性的关键。POSIX标准的规范为开发者提供了指导,确保在开发跨平台的多线程...

    创建多线程线程同步

    在编程领域,多线程是实现并发执行任务的重要方式,特别是在多核处理器系统中,它能充分利用硬件资源,提高程序的执行效率。本主题将深入探讨如何在编程中创建多线程以及如何实现线程同步,特别关注CEVENT对象在...

    Win32多线程程序设计.pdf(带目录)

    ### Win32 API与多线程 Win32 API提供了丰富的函数集,用于创建和管理线程。其中,`CreateThread`函数是最常用的创建新线程的方法。它接收一个线程入口函数的指针,以及线程将使用的参数。一旦线程启动,操作系统会...

    多线程同步(多线程如何访问临界区资源)

    在编程领域,多线程是实现并发执行任务的有效手段,特别是在多核处理器系统中,能够充分利用硬件资源提高程序性能。然而,多线程环境下的资源共享往往伴随着数据竞争问题,这时就需要引入线程同步机制,以确保共享...

    多线程详细讲解与实例

    在IT领域,多线程是并发执行任务的一种关键机制,特别是在服务器端开发、实时系统以及高性能计算中。本文将深入探讨多线程的概念、工作原理、优缺点,并结合实例进行详细讲解。 首先,多线程是指在一个进程中可以...

Global site tag (gtag.js) - Google Analytics