// 1111111.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <thread> #include <mutex> int gcounter = 0; std::mutex gmtx; std::mutex gmtxOutput; void Increases() { for (int i = 0; i<10000; ++i) { if (g…
现在的绝大多数应用程序都是多线程的程序,而当有两个或两个以上的线程需要对同一数据进行存取时,就会出现条件竞争,也即 是这几个线程中都会有一段修改该数据状态的代码.但是如果这些线程的运行顺序推行不当的话是很容易造成死锁现象的.所以在JAVA中为 了防止出现这种现象的出现就产生了锁和条件机制用来对实现各个线程之间互斥的去访问这段临界区的代码,唉!由于我也是才刚学多线程 并发编程,也不可能有多深多深的理解,所以就先只写一下它们的用法了. ------------------YYC 其实从JAVA SE…
#ifndef MY_QUEUE_H__ #define MY_QUEUE_H__ #include<list> #include<mutex> #include<thread> #include<condition_variable> #include <iostream> template <typename T> class SyncQueue{ public: SyncQueue(int maxSize = 10) :maxS…
从windows角度来说,condition_variable类似event. 阻塞等待出发,不过condition_variable可以批量出发. 代码如下: // 1111111.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <thread> #include <mutex> #include <condition_variable>…
没啥好讲的  c++11  thread类的基本使用 #include "stdafx.h" #include <iostream> #include <thread> void Func(int n) { for (int i = 0; i < 3; ++i) std::cout << "func " << i << std::endl; } void RefFunc(int& n) { f…
三 多线程执行的共享数据和非共享数据: 共享数据:就是每个线程执行的时候共享数据使用,比如这个线程一个为5的数据,减少为4之后,另一个线程执行拿到的数据是4,两个线程执行的数据是共享的. 非共享数据:各个线程执行的数据不受其他线程数据的改变而改变. 1 非共享数据: package link.summer7c.test; public class Test{ public static void main(String[] args){ MyThread2 a=new MyThread2("A&…
IO密集型是指对IO操作较多的任务.下面以查询一些股票价格任务为例: YahooFinance.java public class YahooFinance { public static double getPrice(final String ticker) throws IOException{ final URL url = new URL("http://ichart.finance.yahoo.com/table.csv?s=" + ticker); final Buffe…
Executor:是Java线程池的超级接口:提供一个execute(Runnable command)方法;我们一般用它的继承接口ExecutorService. Executors:是java.util.concurrent包下的一个类,提供了若干个静态方法,用于生成不同类型的线程池.Executors一共可以创建下面这四类线程池: newFixedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. newFixedThread…
1.高速缓存 由来:处理器处理能力原因大于主内存(DRAM)访问速率,为了弥补这个差距,引入了高速缓存. 高速缓存是一种存取速率远比主内存大而容量远比主内存小的存储部件,每一个处理器都有其高速缓存.在引入高速缓存之后,处理器执行读.写操作时就不直接操作主内存,而是通过高速缓存执行的.变量名相当于内存地址,变量值相当于相应内存空间中存储的数据.可以理解为,高速缓存为程序中的数据做了一份对应主内存的副本,但高速缓存的存储容量是非常小的,这些数据并不会一直被高速缓存存储.高速缓存在内部结构相当于一个拉…
1. 线程.进程.多线程: 进程是正在执行的程序,线程是进程中的代码执行,多线程就是在一个进程中有多个线程同时执行不同的任务,就像QQ,既可以开视频,又可以同时打字聊天. 2.线程的特点: 1.运行任何一个java程序,jvm在运行时都会创建一个main线程来执行main方法. 2.一个java应用程序至少有两个线程,一个是主线程,负责main方法的执行,一个是垃圾回收器线程,负责回收垃圾. 3.我们可以利用Thread.currentThread().getName()获得当前线程名字. 3.…