c#线程同步问题

问题描述

一个线程里面,有一个循环,时时判断。间隔1秒。在这里生成一个数组,把数组赋值给公共变量。在另一个线程里,我要取这个公共变量。因为第一个线程里面每1秒都在执行,我在第二个线程里面取数组,也就是赋值给的公共变量,自己查一下资料,发现需要锁,同步神马的,也不懂,把简要代码贴出来,求指点第一个线程第二个线程

解决方案

解决方案二:
需要所,最简单的lock一个全局唯一object类型遍历,看下帮助就行
解决方案三:
公共变量赋值和读取的时候,加上lockhttp://blog.csdn.net/tpriwwq/article/details/37814179

时间: 2024-09-17 04:30:11

c#线程同步问题的相关文章

线程同步 卖票问题 三个车站卖七张票

问题描述 线程同步 卖票问题 三个车站卖七张票 正确的写法:public class mainclass { public static void main(String[] args) { Train A=new Train(); Train B=new Train(); Train C=new Train(); A.start(); B.start(); C.start(); } } class Train extends Thread{ public static int ticket=7

基本线程同步(四)在同步代码中使用条件

在同步代码中使用条件 在并发编程中的一个经典问题是生产者与消费者问题,我们有一个数据缓冲区,一个或多个数据的生产者在缓冲区存储数据,而一个或多个数据的消费者,把数据从缓冲区取出. 由于缓冲区是一个共享的数据结构,我们必须采用同步机制,比如synchronized关键字来控制对它的访问.但是我们有更多的限制因素,如果缓冲区是满的,生产者不能存储数据,如果缓冲区是空的,消费者不能取出数据. 对于这些类型的情况,Java在Object对象中提供wait(),notify(),和notifyAll()

vc++-信号量和线程同步的问题:线程函数比较耗时

问题描述 信号量和线程同步的问题:线程函数比较耗时 void trigger() { UINT uWait=::WaitForSingleObject(IEvent,INFINITE); if ( uWait == WAIT_OBJECT_0 ) { processA(); } } processA(); 比较耗时,如果它还没有跑完,下一个触发又来了,就马上又开始执行一个processA(); 吗,还是等待上次的执行完成然后再执行? 解决方案 PC机上会出现乱序或是假死,也就是说有可能后发的先做

四种进程或线程同步互斥的控制方法

进程|控制 很想整理一下自己对进程线程同步互斥的理解.正巧周六一个刚刚回到学校的同学请客吃饭.在吃饭的过程中,有两个同学,为了一个问题争论的面红耳赤.一个认为.Net下的进程线程控制模型更加合理.一个认为Java下的线程池策略比.Net的好.大家的话题一下转到了进程线程同步互斥的控制问题上.回到家,想了想就写了这个东东.  现在流行的进程线程同步互斥的控制机制,其实是由最原始最基本的4种方法实现的.由这4种方法组合优化就有了.Net和Java下灵活多变的,编程简便的线程进程控制手段.  这4种方

Java 线程同步 synchronized

先来看一个不带线程同步的例子,这个例子很简单,只是让两个线程输出同样的内容,并不做其他的事, 所以,线程同步在这里体现的并不明显. import java.util.Date; public class ThreadTest extends Thread{ int pauseTime; String name; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method s

C#编程总结(三)线程同步

在应用程序中使用多个线程的一个好处是每个线程都可以异步执行.对于 Windows 应用程序,耗时 的任务可以在后台执行,而使应用程序窗口和控件保持响应.对于服务器应用程序,多线程处理提供了 用不同线程处理每个传入请求的能力.否则,在完全满足前一个请求之前,将无法处理每个新请求.然 而,线程的异步特性意味着必须协调对资源(如文件句柄.网络连接和内存)的访问.否则,两个或更 多的线程可能在同一时间访问相同的资源,而每个线程都不知道其他线程的操作. "如果觉得有用,请帮顶! 如果有不足之处,欢迎拍砖!

OpenMP 线程同步之临界区

多核/多线程编程中肯定会用到同步互斥操作.除了互斥变量以为,就是临界区. 临界区是指在用一时刻只允许一个线程执行的一段用{...},包围的代码段. 在OpenMP中临界区声明方法如下: #pragma omp critical [(name)] //[]表示名字可选 { //需要同一时刻只能有一个线程访问的代码 } 如下面的代码: #include <stdio.h> #include <omp.h> int main() { int sum = 0; #pragma omp pa

Windows 8 Store Apps学习(47) 多线程之线程同步: Semaphore等

多线程之线程同步: Semaphore, CountdownEvent, Barrier, ManualResetEvent, AutoResetEvent 介绍 重新想象 Windows 8 Store Apps 之 线程同步 Semaphore - 信号量 CountdownEvent - 通过信号数量实现线程同步 Barrier - 屏障 ManualResetEvent - 手动红绿灯 AutoResetEvent - 自动红绿灯 示例 1.演示 Semaphore 的使用 Thread

UNIX环境高级编程:线程同步之互斥量

互斥量(也称为互斥锁)出自POSIX线程标准,可以用来同步同一进程中的各个线程.当然如果一个互斥量存放在多个进程共享的某个内存区中,那么还可以通过互斥量来进行进程间的同步. 互斥量,从字面上就可以知道是相互排斥的意思,它是最基本的同步工具,用于保护临界区(共享资源),以保证在任何时刻只有一个线程能够访问共享的资源. 互斥量类型声明为pthread_mutex_t数据类型,在<bits/pthreadtypes.h>中有具体的定义. 1互斥量初始化和销毁 #include <pthread

UNIX环境高级编程:线程同步之读写锁及属性

读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程.当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步, 互斥量要么是锁住状态要么是不加锁状态,而且一次只有一个线程可以对其加锁.读写锁可以有三种状态:读模式下的加锁状态,写模式下的加锁状态,不加锁状态. 一次只有一个线程可以占有写模式的读写锁,但是多个线程可以同时占有读模式的读写锁. 当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁(读或写