生产者和消费者是多线程经典的问题,生产者和消费者问题的核心是同步的问题,同步问题的核心是要保证同一个资源被多个线程并发访问时的完整性,常用的方法是采用信号或加锁机制,保证资源在任一时刻只能被一个线程访问。这一问题用java来实现的话主要有4种方式。1.wait()/notify();2.await()/signal(); 3.blockingQuene 4.PipedInputStream/pip...
分类:
编程语言 时间:
2014-11-29 20:16:12
阅读次数:
202
这篇文章总结下 Linux 中多线程编程中能用到的几个函数,当然,需要同步操作的时候还需要加锁的操作,这里,没有列举的这么具体,只是把最常用的函数介绍下。 在编写多线程程序在编译的时候需要加上 -lpthread,因为用到了 pthread 库。/**
头文件:
#include
功能:
创建一个线程
参数:
tid : 用于返回线程 id
attr : 设置线程...
分类:
编程语言 时间:
2014-11-26 16:38:14
阅读次数:
187
在这里写这种文章好奇怪,先用作笔记吧Java中有如下的方法来处理代码块的并发访问问题:一是关键字synchronized二是加锁(锁对象,条件对象)Java给每一个对象都提供了一个内部锁,在方法的定义中加上关键字synchronized后,那么对象的锁将保护整个方法。也就是说下面两种写法是等价的:p...
分类:
编程语言 时间:
2014-11-26 13:47:15
阅读次数:
137
背景MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任...
分类:
数据库 时间:
2014-11-25 15:50:45
阅读次数:
299
datagridview的数据源操作在一个方面里面处理不要多个地方处理并且处理的时候要加锁红叉 应该是多线程操作出现的。trycatch只是起到捕获异常的功能,但是一旦出现了这种错误。控件自身就出异常了。所以 try catch 可以避免程序不崩溃,但是不能保证不出现红叉只要在操作数据源的地方加就可...
分类:
编程语言 时间:
2014-11-24 18:32:32
阅读次数:
175
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。
同步机制可以使用synchronized关键字实现。
当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。
当synchronized方法执行完或发生异常时,会自动释放锁。
下面通过一个例子来对synchronize...
分类:
编程语言 时间:
2014-11-24 11:52:24
阅读次数:
326
事物:MYISAM不支持事物,MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快。如果不考虑事物,大量的select和insert适合MYISAM表锁:MYISAM支持表锁 INNODB提供行级锁,提供与 Oracle 类型一致的不加锁读取(non-locking read in),...
分类:
数据库 时间:
2014-11-24 09:52:40
阅读次数:
226
多线程操作同一个文件时会出现并发问题。解决的一个办法就是给文件加锁(lock),但是这样的话,一个线程操作文件时,其它的都得等待,这样的话性能非常差。另外一个解决方案,就是先将数据放在队列中,然后开启一个线程,负责从队列中取出数据,再写到文件中。
下面我们讲解一个实际项目中应用的案例,关于日志的处理.这里是使用ASP.NET MVC项目作为Demo。
方式一:使用队列
思路:把所有产生的日志...
分类:
Web程序 时间:
2014-11-23 17:39:13
阅读次数:
243
在程序设计中,我们有时会遇到这样的情况,一个线程将数据写到一个buffer中,另外一个线程从中读数据。所以这里就有多线程竞争的问题。通常的解决办法是对竞争资源加锁。但是,一般加锁的损耗较高。其实,对于这样的一个线程写,一个线程读的特殊情况,可以以一种简单的无锁RingBuffer来实现。这样代码的运...
分类:
编程语言 时间:
2014-11-22 13:17:54
阅读次数:
280