先看看为什么要用锁
需求:多线程处理值的加减
 
        static int NoLockData = 0;

        public static void NoLockNormalTest(int threadIndex)
{ while (true)//这是脑残设计,while(true)
{
//lock (lockNormal)
{
NoLockData++;
Debug.Print("{0}无锁状态的+值{1}", threadIndex, NoLockData);
NoLockData--;
Debug.Print("{0}无锁状态的-值{1}", threadIndex, NoLockData);
}
Thread.Sleep(1);//让我们养成良好习惯,每一个while都要休息下
}
}

  

            new Thread(() =>{ NoLockNormalTest(1); }){ IsBackground=true}.Start();
new Thread(() =>{ NoLockNormalTest(2); }){ IsBackground=true}.Start();
new Thread(() =>{ NoLockNormalTest(3); }){ IsBackground=true}.Start();
new Thread(() =>{ NoLockNormalTest(4); }) { IsBackground=true}.Start();

  

这个时候值是乱的

引入第一种锁lock

 /// <summary>
/// 声明一个应用object变量,不能值变量,别问,问就是object变量,养成习惯,static 是因为我在控制台
/// </summary>
private static object lockNormal = new object();
public static void LockNormalTest(int threadIndex)
        {
            while (true)//这是脑残设计,while(true)
            {
                lock (lockNormal)
                {
                    NoLockData++;
                    Debug.Print("{0}无锁状态的+值{1}", threadIndex, NoLockData);
                    NoLockData--;
                    Debug.Print("{0}无锁状态的-值{1}", threadIndex, NoLockData);
                }
                Thread.Sleep(1);//让我们养成良好习惯,每一个while都要休息下
            }
        }

  

这个时候值是稳定的大家都在无序被锁控制

很简单把,使用注意点,要锁的话必须同一个变量  

public static object lockData=new  object();
lock(lockData)
{
    //这里面处理事情
}
 
 
 

C# Lock锁(个人随记)的更多相关文章

  1. Lock锁的使用示例

    Lock锁是java5用来代替synchronized的一种面向对象的锁的方案 public class LockDemo { /** * Lock是用来替换synchronized, 优点是Lock ...

  2. Android(java)学习笔记69:JDK5之后的Lock锁的概述和使用

    1. Lock锁的概述: java.util.concurrent.locks,接口Lock 首先Lock是一个接口,Lock实现提供了比使用synchronized方法 和 同步代码块更为广泛的锁定 ...

  3. python多线程threading.Lock锁用法实例

    本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...

  4. Lock锁_线程_线程域

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  5. (删)Java线程同步实现二:Lock锁和Condition

    在上篇文章(3.Java多线程总结系列:Java的线程同步实现)中,我们介绍了用synchronized关键字实现线程同步.但在Java中还有一种方式可以实现线程同步,那就是Lock锁. 一.同步锁 ...

  6. 转: 【Java并发编程】之二十:并发新特性—Lock锁和条件变量(含代码)

    简单使用Lock锁 Java5中引入了新的锁机制--Java.util.concurrent.locks中的显式的互斥锁:Lock接口,它提供了比synchronized更加广泛的锁定操作.Lock接 ...

  7. 使用Lock锁生产者消费者模式

    package com.java.concurrent; import java.util.concurrent.locks.Condition; import java.util.concurren ...

  8. JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题

    JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...

  9. java并发编程的艺术——第五章总结(Lock锁与队列同步器)

    Lock锁 锁是用来控制多个线程访问共享资源的方式. 一般来说一个锁可以防止多个线程同时访问共享资源(但有些锁可以允许多个线程访问共享资源,如读写锁). 在Lock接口出现前,java使用synchr ...

随机推荐

  1. python的select服务端的代码和客户端的代码

    服务端的代码 import socket import queue import select ip_bind = ("127.0.0.1",9000) message_queue ...

  2. python之event【事件】

    # 线程之间用于交互的一个对象,这个event是一个内部的标签,线程可以等待这个标签的状态 #举个例子,比如红绿灯是一个线程,三辆汽车是3个线程,如果为红灯,则三个汽车的线程必须 #要停止,如果是绿灯 ...

  3. linux-git服务搭建

    第一步,安装git: 源码安装参考:http://www.cnblogs.com/syuf/p/9151115.html 第二步,创建一个git用户,用来运行git服务: $ sudo adduser ...

  4. 750A New Year and Hurry

    A. New Year and Hurry time limit per test 1 second memory limit per test 256 megabytes input standar ...

  5. illumina SBS测序详解

    illumina SBS测序详解 2018年01月02日 09:33:56 sixu_9days 阅读数:9789 标签: 生物信息学二代测序 更多 个人分类: 测序原理   最近回头重新看了illl ...

  6. Ubuntu下笔记本触控板的禁启

    1.命令行方式,得每次用终端输入命令行设置 sudo rmmod psmouse #禁用触摸板 sudo modprobe psmouse #启用触摸板 2.永久禁用触摸板 打开终端,然后 sudo ...

  7. UDP接收数据

    http://blog.csdn.net/xingzheouc/article/details/49946191 http://blog.csdn.net/robertkun/article/deta ...

  8. part1:9-windows与Linux文件共享

    1.winSCP 它是一个windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它主要功能就是在本地与远程计算机间安全的复制文件. 前提:Linux与windows能相互pin ...

  9. crontab误删除

    命令如下: cat /var/log/cron* | grep -i "`which cron`" > ./all_temp cat ./all_temp | grep -v ...

  10. 2018.10.14 NOIP训练 圣诞树(简单dp)

    传送门 sbDP题. 曾经一直TLE不知道为什么. 这次发现输入有坑233. 代码