从windows角度来说,condition_variable类似event. 阻塞等待出发,不过condition_variable可以批量出发. 代码如下: // 1111111.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <thread> #include <mutex> #include <condition_variable>…
#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…
没啥好讲的  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…
基本内存屏障 处理器支持那种内存重排序,就会提供能够禁止相应内存重排序的的指令,这些指令就被成为基本内存屏障:StroeLoad屏障.StroeLoad屏障.LoadLoad屏障.LoadStore屏障.基本内存屏障是对一类指令的称呼(可以用XY来标识),这类指令的作用是禁止该指令左侧的X操作与该指令右侧的Y操作之间进行重排序,从而确保该指令左侧的所有X操作先于该指令右侧的Y操作被提交,即内存操作作用到主内存(或高速缓存)上.基本内存屏障只是保障其左侧的X操作先于右侧的Y操作被提交,但是它并不完…
// 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多线程学习笔记(1) 由于笔者使用markdown格式书写,后续copy到blog可能存在格式不美观的问题,本文的.mk文件已经上传到个人的github,会进行同步更新.github传送门 一.创建新进程 由于这部分比较基础,这里不过多赘述,主要以代码呈现 1.java.lang.Thread的extends public class MyThread extends Thread {    public void run() {       ...   }}​public class…
多线程学习笔记 1.什么是线程 操作系统中 打开一个程序就是一个进程 一个进程可以创建多个线程 现在系统中 系统调度的最小单元是线程 2.多线程有什么用? 发挥多核CPU的优势 如果使用多线程 将计算逻辑分配到多个处理器核心上 会减少程序处理时间 防止阻塞 一个业务内部需要多个业务配合完成 如果是单线程 就会发生执行一件后再执行另一件,如果是多线程 可以多个业务逻辑 并发执行 快速响应用户请求 缩短响应时间 便于建模 比如有一个大任务 特别复杂 可以分解成多个小任务 分别建立程序模型,并通过多线…
一.线程类  1.新建状态(New):新创建了一个线程对象.        2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权.        3.运行状态(Running):就绪状态的线程获取了CPU,执行程序代码.        4.阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行.直到线程进入就绪状态,才有机会转到运行状态.阻塞的情况分三种:   …
目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是WeakReferrence? 总结 多线程学习笔记九之ThreadLocal 简介   ThreadLocal顾名思义理解为线程本地变量,这个变量只在这个线程内,对于其他的线程是隔离的,JDK中对ThreadLocal的介绍: This class provides thread-local var…
1. 线程.进程.多线程: 进程是正在执行的程序,线程是进程中的代码执行,多线程就是在一个进程中有多个线程同时执行不同的任务,就像QQ,既可以开视频,又可以同时打字聊天. 2.线程的特点: 1.运行任何一个java程序,jvm在运行时都会创建一个main线程来执行main方法. 2.一个java应用程序至少有两个线程,一个是主线程,负责main方法的执行,一个是垃圾回收器线程,负责回收垃圾. 3.我们可以利用Thread.currentThread().getName()获得当前线程名字. 3.…