C# Lock锁(个人随记)
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都要休息下
}
}

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

很简单把,使用注意点,要锁的话必须同一个变量
{
//这里面处理事情
C# Lock锁(个人随记)的更多相关文章
- Lock锁的使用示例
Lock锁是java5用来代替synchronized的一种面向对象的锁的方案 public class LockDemo { /** * Lock是用来替换synchronized, 优点是Lock ...
- Android(java)学习笔记69:JDK5之后的Lock锁的概述和使用
1. Lock锁的概述: java.util.concurrent.locks,接口Lock 首先Lock是一个接口,Lock实现提供了比使用synchronized方法 和 同步代码块更为广泛的锁定 ...
- python多线程threading.Lock锁用法实例
本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...
- Lock锁_线程_线程域
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- (删)Java线程同步实现二:Lock锁和Condition
在上篇文章(3.Java多线程总结系列:Java的线程同步实现)中,我们介绍了用synchronized关键字实现线程同步.但在Java中还有一种方式可以实现线程同步,那就是Lock锁. 一.同步锁 ...
- 转: 【Java并发编程】之二十:并发新特性—Lock锁和条件变量(含代码)
简单使用Lock锁 Java5中引入了新的锁机制--Java.util.concurrent.locks中的显式的互斥锁:Lock接口,它提供了比synchronized更加广泛的锁定操作.Lock接 ...
- 使用Lock锁生产者消费者模式
package com.java.concurrent; import java.util.concurrent.locks.Condition; import java.util.concurren ...
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...
- java并发编程的艺术——第五章总结(Lock锁与队列同步器)
Lock锁 锁是用来控制多个线程访问共享资源的方式. 一般来说一个锁可以防止多个线程同时访问共享资源(但有些锁可以允许多个线程访问共享资源,如读写锁). 在Lock接口出现前,java使用synchr ...
随机推荐
- python的select服务端的代码和客户端的代码
服务端的代码 import socket import queue import select ip_bind = ("127.0.0.1",9000) message_queue ...
- python之event【事件】
# 线程之间用于交互的一个对象,这个event是一个内部的标签,线程可以等待这个标签的状态 #举个例子,比如红绿灯是一个线程,三辆汽车是3个线程,如果为红灯,则三个汽车的线程必须 #要停止,如果是绿灯 ...
- linux-git服务搭建
第一步,安装git: 源码安装参考:http://www.cnblogs.com/syuf/p/9151115.html 第二步,创建一个git用户,用来运行git服务: $ sudo adduser ...
- 750A New Year and Hurry
A. New Year and Hurry time limit per test 1 second memory limit per test 256 megabytes input standar ...
- illumina SBS测序详解
illumina SBS测序详解 2018年01月02日 09:33:56 sixu_9days 阅读数:9789 标签: 生物信息学二代测序 更多 个人分类: 测序原理 最近回头重新看了illl ...
- Ubuntu下笔记本触控板的禁启
1.命令行方式,得每次用终端输入命令行设置 sudo rmmod psmouse #禁用触摸板 sudo modprobe psmouse #启用触摸板 2.永久禁用触摸板 打开终端,然后 sudo ...
- UDP接收数据
http://blog.csdn.net/xingzheouc/article/details/49946191 http://blog.csdn.net/robertkun/article/deta ...
- part1:9-windows与Linux文件共享
1.winSCP 它是一个windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它主要功能就是在本地与远程计算机间安全的复制文件. 前提:Linux与windows能相互pin ...
- crontab误删除
命令如下: cat /var/log/cron* | grep -i "`which cron`" > ./all_temp cat ./all_temp | grep -v ...
- 2018.10.14 NOIP训练 圣诞树(简单dp)
传送门 sbDP题. 曾经一直TLE不知道为什么. 这次发现输入有坑233. 代码