C#多线程方法同步

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Runtime.CompilerServices;

namespace TestMethodSynchronized
{
    class SyncHelper
    {
        static int cnt = 0;

        [MethodImpl(MethodImplOptions.Synchronized)]
        public static void Execute(object state)
        {
            int t = cnt;
            Console.WriteLine("ThreadId:{2,-5}, Sate:{1},Excute at {0},计时器:{3}", DateTime.Now, state.ToString(),
                Thread.CurrentThread.ManagedThreadId, t);
            Thread.Sleep(500);
            ++t;
            cnt = t;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                ThreadPool.QueueUserWorkItem(SyncHelper.Execute,i);
            }

            Console.WriteLine("done.");
            Console.ReadKey();
        }
    }
}

  

C#多线程方法同步

时间: 2024-10-29 19:12:20

C#多线程方法同步的相关文章

多线程之同步与死锁

面试的时候被问到,在线性回归中,有三个假设,是哪三个? 当时回答出来自变量x和因变量y之间是线性变化关系,也就是说,如果x进行线性变化的话,y也会有相应的线性变化. 提到数据样本的时候也答道了样本点之间要求是独立同分布的(根据MLE准则,假定对样本加上高斯白噪声e的情况下). 但是第三个最终还是没有答上来,面试官也没有再给提示,所以回来自己再查一下. LR的wiki页面(http://en.wikipedia.org/wiki/Linear_regression)中,有提到了LR的假设,分别是:

多线程以及同步问题

1.在单例设计模式中,会出现多线程的同步问题.主要表现在,当使用的是懒汉式单例设计模式来创建对象的时候,若有多个进程同时在执行,则有可能会创建了多个对象,但这个不是单例设计模式应该出现的问题.所以需要使用锁机制来解决.需要注意的是,饿汉式不会出现这个问题.具体代码如下. 1 class Singleton_lazy{ 2 //懒汉式 3 private Singleton_lazy(){} 4 5 private static Singleton_lazy INSTANCE = null; 6

Python标准库08 多线程与同步 (threading包)

Python主要通过标准库中的threading包来实现多线程.在当今网络时代,每个服务器都会接收到大量的请求.服务器可以利用多线程的方式来处理这些请求,以提高对网络端口的读写效率.Python是一种网络服务器的后台工作语言 (比如豆瓣网),所以多线程也就很自然被Python语言支持. (关于多线程的原理和C实现方法,请参考我之前写的Linux多线程与同步,要了解race condition, mutex和condition variable的概念) 多线程售票以及同步 我们使用Python来实

Java 多线程(五) 多线程的同步

Java 多线程(五) 多线程的同步 为什么要引入同步机制 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源.必须对这种潜在资源冲突进行预防. 解决方法:在线程使用一个资源时为其加锁即可. 访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁. 程序实例 用一个取钱的程序例子,来说明为什么需要引入同步. 在使用同步机制前,整体程序如下: public class FetchMoneyTest { public static void main(Stri

浅谈Java多线程的同步问题 【转】

多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问. 下面以一个简单的实例来进行对比分析.实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印. 先来看第一段代码,这里我们在run()方法中加入了synchronized关键字,希望能对run方法进行互斥访问,但结果并不如我们希望那样,这是因为这里synchronized锁住的是this对象,即当前运行线

浅谈Java多线程的同步问题

多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问. 下面以一个简单的实例来进行对比分析.实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印. 先来看第一段代码,这里我们在run()方法中加入了synchronized关键字,希望能对run方法进行互斥访问,但结果并不如我们希望那样,这是因为这里synchronized锁住的是this对象,即当前运行线

Linux多线程与同步

Linux多线程与同步 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 典型的UNIX系统都支持一个进程创建多个线程(thread).在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程.尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别. 多线程 我们先来看一下什么是多线程.在Linux从程序到进程中,我们看到了一个程序在内存中的表示.这个程

多线程&线程同步

线程 程序执行过程中,并发执行的代码段. 线程之间可以共享内存. 线程安全 增加了同步处理,确保在同一时刻,只有一个线程执行同步代码. 保证线程安全的方法就是锁机制 java中的任何对象都可以作为锁对象 synchronized(lock){....} 代码块中的代码被确保同一时间只有一个线程才能执行 同步方法是用当前对象作为同步对象(this) public synchronized int getTicket(){...} synchronized关键字也能加在方法上 确保同一时间只有一个线

boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等

一.使用同步定时器 这个示例程序通过展示如何在一个定时器执行一个阻塞等待. [cpp] view plaincopy //makefile #---------------------------------------------------------- #makefile helloworld测试用例 # # # # #----------------------------------------------------------- ggg=g++ exe=asiotimer #所有的