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并发讨论
手段有多线程,多进程,协程. 对于多线程: 由于GIL(全局解释器锁)的存在,多线程实际是单线程的,不能发挥多核的作用: 但对于IO密集型程序,多线程对于效率是有提高的,由于阻塞时,可能会切换到别的线 ...
- expdp、impdp使用
expdp介绍 EXPDP命令行选项1. ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下ATTACH=[schema_name.]job_nameSchema_name用于指定 ...
- discuz回贴通知插件实现-页面嵌入点(钩子)
1.如何保证主题被回复时业务代码被执行. 2.获得主题,主题发布者,贴子等信息. 3.discuz发送email邮件. discuz使用嵌入点(钩子)来处理代码的执行时机. 当用户开启插件开发者模 ...
- (转)innodb 多版本并发控制原理详解
转自:https://blog.csdn.net/aoxida/article/details/50689619 多版本并发控制技术已经被广泛运用于各大数据库系统中,如Oracle,MS SQL Se ...
- C&C++内存布局
1. Memory Layout of a C Program http://codingfreak.blogspot.com/2012/03/memory-layout-of-c-program-p ...
- select查询
4.2 查询功能 SQL的核心是查询.SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询块组成,多个查询块可以嵌套执行. 以下表为以后的例子中使用表: 档案 ...
- Codeforces 607A 动态规划
A. Chain Reaction time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- JVM家族史考【转】
说起Java虚拟机,许多Java程序员都会潜意识地把它与Sun(虽然太阳已然西落,但永远值得被记忆) HotSpot虚拟机等同看待,也许还有一些程序员会注意到BEA JRockit和IBM J9,但大 ...
- StartServiceCtrlDispatcher
服务程序通常编写成控制台类型的应用程序,总的来说,一个遵守服务控制管理程序接口要求的程序 包含下面三个函数: 1.服务程序主函数(main):调用系统函数 StartServiceCtrlDispat ...
- 多线程的使用:只能用cmd来玩不能用idle
from multiprocessing import Process import os def pro_do(name, func): print () if __name__ == " ...