首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
云计算
数据智能老司机
创建于2023-07-21
订阅专栏
云计算相关
等 31 人订阅
共213篇文章
创建于2023-07-21
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Rust原子和锁——构建自己的锁
在本章中,我们将构建我们自己的互斥锁、条件变量和读写锁。对于每种锁,我们会从一个非常基础的版本开始,然后逐步扩展,使其更高效。 由于我们不会使用标准库中的锁类型(那样就没有挑战了),我们需要使用第8章
Rust原子和锁——操作系统原语
到目前为止,我们主要关注的是非阻塞操作。如果我们想实现诸如互斥锁(mutex)或条件变量(condition variable)这样的机制,即一种可以等待其他线程解锁或通知它的机制,我们需要一种方法来
Kali Linux——网络安全测试基础
安全测试是一个广泛的术语,涵盖了许多不同的内容。通常,渗透测试是通过网络远程进行的。然而,并非所有的安全测试都是渗透测试。有时,开发团队可能希望对应用程序进行测试,包括Web应用程序。这些Web应用程
Kali Linux——基础
Kali Linux 是一个基于 Ubuntu Linux 的专用 Linux 发行版,而 Ubuntu 又是基于 Debian Linux。Kali 主要面向那些从事安全工作的人群。这些工作可能包括
Rust原子和锁——理解处理器
虽然第 2 章和第 3 章的理论足以让我们编写正确的并发代码,但在处理器层面上,发展对实际发生情况的近似理解也非常有用。在本章中,我们将探索原子操作编译为机器指令的过程,不同处理器架构之间的差异,为什
Rust原子和锁——构建自己的“Arc”
在“引用计数”中,我们看到了 std::sync::Arc<T> 类型,它允许通过引用计数进行共享所有权。Arc::new 函数创建一个新的内存分配,就像 Box::new 一样。然而,与 Box 不
Rust原子和锁——构建自己的通道
一些通道只能在一个发送端和一个接收端之间使用,而另一些通道可以允许任意数量的线程发送数据,甚至支持多个接收端。一些通道是阻塞的,这意味着接收(有时是发送)操作是一个阻塞操作,会让线程休眠直到操作可以完
Rust原子和锁——构建自己的自旋锁
锁定一个常规的互斥锁(参见章节“锁定:互斥锁和读写锁”)时,如果该互斥锁已经被锁定,你的线程将会被挂起。这种机制可以避免在等待锁释放时浪费资源。如果锁只会在极短的时间内被持有,并且多个锁定它的线程可以
Rust原子和锁——内存排序
在第 2 章中,我们简要提到了内存排序的概念。在本章中,我们将深入探讨这一主题,探索所有可用的内存排序选项,以及最重要的——何时使用哪一种。 重排序与优化 处理器和编译器会使用各种技巧来加快程序的运行
Rust原子和锁——原子
“原子”这个词源于希腊语“ἄτομος”,意为“不可分割的”,即不能被分割成更小的部分。在计算机科学中,这个词用于描述一种不可分割的操作:要么完全完成,要么尚未发生。 正如在“借用和数据竞争”中提到的
Rust原子和锁——Rust 并发基础
在多核处理器普及之前很久,操作系统就已经允许单台计算机同时运行多个程序。这通过快速在多个进程之间切换来实现,每个进程都能逐步地、一点一点地向前推进。如今,几乎所有的计算机,甚至手机和手表,都配备了多核
Rust中的异步编程——创建自己的运行时
在过去的几章中,我们涵盖了许多与 Rust 异步编程相关的方面,但我们是通过实现与目前 Rust 中存在的抽象不同且更简单的抽象来完成这些工作的。本书的最后一章将专注于缩小这一差距,通过改变我们的运行
Rust中的异步编程——协程、自引用结构体和 Pinning
在本章中,我们将通过增加在状态变化时存储变量的能力来改进我们的协程。我们将看到,这将导致我们的协程需要引用它们自身,并由此引发的一些问题。之所以专门为这个主题编写整整一章,是因为它是让 Rust 中的
Rust中的异步编程——运行时、Waker 和 Reactor-Executor 模式
在上一章中,我们通过将可暂停任务(协程)实现为状态机,创建了属于我们自己的协程系统。我们为这些任务提供了一个通用的 API,要求它们实现 Future 特征。同时,我们展示了如何使用一些关键字来生成这
Rust中的异步编程——Coroutines 和 async/await
现在你已经对Rust的异步模型有了一个简要的了解,是时候来看看它如何融入到本书迄今为止涉及的内容中。 Rust的futures是基于无栈协程(stackless coroutines)的异步模型的一个
Rust中的异步编程——Rust 中的 Futures
第5章中,我们介绍了一种在编程语言中实现并发的流行方式:纤程(fibers)或绿色线程(green threads),它们是有栈协程(stackful coroutines)的示例。另一种流行的异步编
Rust中的异步编程——创建我们自己的Fiber
在本章中,我们将深入探讨一种非常流行的并发处理方式。没有什么比亲自实现更能让人深入理解这个主题的了。幸运的是,尽管主题有些复杂,但最终我们只需要大约 200 行代码,就可以得到一个完全可行的示例。 使
Rust中的异步编程——创建你自己的事件队列
在本章中,我们将使用 epoll 创建一个简单版本的事件队列。我们将借鉴 mio(https://github.com/tokio-rs/mio),这是一个用 Rust 编写的低级 I/O 库,它是
Rust中的异步编程——理解操作系统支持的事件队列、系统调用和跨平台抽象
在本章中,我们将探讨操作系统支持的事件队列的工作原理,以及三种不同操作系统如何以不同方式处理此任务。之所以进行这个讲解,是因为我所知的大多数异步运行时都将这种操作系统支持的事件队列作为实现高性能I/O
Rust 中的异步编程——编程语言如何建模异步程序流
在上一章中,我们从总体上讨论了异步程序流、并发和并行。在本章中,我们将缩小范围,具体探讨编程语言和库中不同的并发建模方法。 请记住,线程、futures、fibers、goroutines、promi
下一页