文章 2024-09-14 来自:开发者社区

谷粒商城笔记+踩坑(14)——异步和线程池

 导航: 谷粒商城笔记+踩坑汇总篇  Java笔记汇总: 【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析-CSDN博客 目录 1. 初始化线程的4种方式 1.1 继承 Thread类,重写run()方法 1...

谷粒商城笔记+踩坑(14)——异步和线程池
文章 2024-05-18 来自:开发者社区

FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频

同步播放音视频的时候,《FFmpeg开发实战:从零基础到短视频上线》一书第10章的示例程序playsync.c采取一边遍历一边播放的方式,在源文件的音频流和视频流交错读取的情况下,该方式可以很好地实现同步播放功能。 但个别格式的音频流和视频流是分开存储的,前面一大段放了所有的音频帧,后面一大段放了所有的视频帧&#...

FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
文章 2024-05-17 来自:开发者社区

Android 笔记:AndroidTrain , Lint , build(1),只需一篇文章吃透Android多线程技术

// Set a slide in animation by getting an Animation from the Resources object mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.hyperspace_in)); ...

Android 笔记:AndroidTrain , Lint , build(1),只需一篇文章吃透Android多线程技术
文章 2023-10-17 来自:开发者社区

[笔记]C++并发编程实战 《三》线程间共享数据(四)

3.3.1 保护共享数据的初始化过程假设你有一个共享源,构建代价很昂贵,它可能会打开一个数据库连接或分配出很多的内存。延迟初始化(Lazy initialization)在单线程代码很常见——每一个操作都需要先对源进行检查,为了了解数据是否被初始化,然后在其使用前决定,数据是否需要初始化:std::shared_ptr<some_resource> resource_ptr; voi....

文章 2023-10-17 来自:开发者社区

[笔记]C++并发编程实战 《三》线程间共享数据(三)

使用锁的层次结构虽然,定义锁的顺序是一种特殊情况,但锁的层次的意义在于提供对运行时约定是否被坚持的检查。这个建议需要对你的应用进行分层,并且识别在给定层上所有可上锁的互斥量。当代码试图对一个互斥量上锁,在该层锁已被低层持有时,上锁是不允许的。你可以在运行时对其进行检查,通过分配层数到每个互斥量上,以及记录被每个线程上锁的互斥量。下面的代码列表中将展示两个线程如何使用分层互斥。清单3.7 使用层次....

文章 2023-10-17 来自:开发者社区

[笔记]C++并发编程实战 《三》线程间共享数据(二)

3.2.3 定位接口间的条件竞争因为使用了互斥量或其他机制保护了共享数据,就不必再为条件竞争所担忧吗?并不是,你依旧需要确定数据是否受到了保护。回想之前双链表的例子,为了能让线程安全地删除一个节点,需要确保防止对这三个节点(待删除的节点及其前后相邻的节点)的并发访问。如果只对指向每个节点的指针进行访问保护,那就和没有使用互斥量一样,条件竞争仍会发生——除了指针,整个数据结构和整个删除操作需要保护....

[笔记]C++并发编程实战 《三》线程间共享数据(二)
文章 2023-10-17 来自:开发者社区

[笔记]C++并发编程实战 《三》线程间共享数据(一)

前言本章主要内容共享数据带来的问题使用互斥量保护数据数据保护的替代方案第3章 线程间共享数据上一章中,我们已经对线程管理有所了解,现在让我们来看一下“共享数据的那些事”。想象一下,你和你的朋友合租一个公寓,公寓中只有一个厨房和一个卫生间。当你的朋友在卫生间时,你就会不能使用了(除非你们特别好,可以在同时使用一个房间)。这个问题也会出现在厨房,假如:厨房里有一个组合式烤箱,当在烤香肠的时候,也在做....

[笔记]C++并发编程实战 《三》线程间共享数据(一)
文章 2023-10-17 来自:开发者社区

[笔记]C++并发编程实战 《二》线程管理(二)

2.2 向线程函数传递参数清单2.4中,向 std::thread 构造函数中的可调用对象,或函数传递一个参数很简单。需要注意的是,默认参数要拷贝到线程独立内存中,即使参数是引用的形式,也可以在新线程中进行访问。再来看一个例子:void f(int i, std::string const&amp; s); std::thread t(f, 3, "hello");代码创建了一个调用f(3, "....

文章 2023-10-17 来自:开发者社区

[笔记]C++并发编程实战 《二》线程管理(一)

前言第2章 线程管理本章主要内容启动新线程等待线程与分离线程线程唯一标识符好的!看来你已经决定使用多线程了。先做点什么呢?启动线程、结束线程,还是如何监管线程?C++标准库中只需要管理 std::thread 关联的线程,无需把注意力放在其他方面。不过,标准库太灵活,所以管理起来不会太容易。本章将从基本的开始:启动一个线程,等待这个线程结束,或放在后台运行。再看看怎么给已经启动的线程函数传递参数....

[笔记]C++并发编程实战 《二》线程管理(一)
文章 2023-10-16 来自:开发者社区

[笔记]Windows核心编程《二十一》线程本地存储器TLS

前言引入用线程本地存储器TLS原因由于运行期库是在多线程应用程序出现前的许多年前的设计的,因此运行期库中的大多数函数是用于单线程应用程序的。例如strtok,在多线程环境中,一个线程可以调用 strtok,然后,在它能够再次调用该函数之前,另一个线程也可以调用strtok。在这种情况下,第二个线程会在第一个线程不知道的情况下,让strtok用一个新地址来改写它的静态变量。第一个线程将来调用str....

[笔记]Windows核心编程《二十一》线程本地存储器TLS

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐