 Rust 程序设计语言 简体中文版 1.85.0指向的堆空间。 在其他一些语言中的某些类型,我们不得不记住在每次使用完那些类型的智能指针实例后调用 清理内存或资源的代码。常见示例包括文件句柄(file handles)、套接字(sockets)和锁 (locks)。如果忘记的话,运行代码的系统可能会因为负荷过重而崩溃。在 Rust 中,可以指定 每当值离开作用域时被执行的代码,编译器会自动插入这些代码。于是我们就不需要在程序中 到处编写在实例结束时清理这些变量的代码 功能并不是一件容易的事。通常也不需要禁用 drop ;整个 Drop trait 存在的意义在于其是自动处理的。然而,有时你可能需要提早清理某个值。一个例子是当 使用智能指针管理锁时;你可能希望强制运行 drop 方法来释放锁以便作用域中的其他代码可 以获取锁。Rust 并不允许我们主动调用 Drop trait 的 drop 方法;当我们希望在作用域结束之 前就强制释放变量的话,我们应该使用的是由标准库提供的 std::mem::drop 助:举 个例子,让我们来看看互斥器(mutexes),较为常见的共享内存并发原语之一。 使用互斥器实现同一时刻只允许一个线程访问数据 互斥器(mutex)是互相排斥(mutual exclusion)的缩写,因为在同一时刻,它只允许一个 线程访问数据。为了访问互斥器中的数据,线程首先需要通过获取互斥器的锁(lock)来表明 其希望访问数据。锁是一个数据结构,作为互斥器的一部分,它记录谁有数据的专属访问权。0 码力 | 562 页 | 3.23 MB | 26 天前3 Rust 程序设计语言 简体中文版 1.85.0指向的堆空间。 在其他一些语言中的某些类型,我们不得不记住在每次使用完那些类型的智能指针实例后调用 清理内存或资源的代码。常见示例包括文件句柄(file handles)、套接字(sockets)和锁 (locks)。如果忘记的话,运行代码的系统可能会因为负荷过重而崩溃。在 Rust 中,可以指定 每当值离开作用域时被执行的代码,编译器会自动插入这些代码。于是我们就不需要在程序中 到处编写在实例结束时清理这些变量的代码 功能并不是一件容易的事。通常也不需要禁用 drop ;整个 Drop trait 存在的意义在于其是自动处理的。然而,有时你可能需要提早清理某个值。一个例子是当 使用智能指针管理锁时;你可能希望强制运行 drop 方法来释放锁以便作用域中的其他代码可 以获取锁。Rust 并不允许我们主动调用 Drop trait 的 drop 方法;当我们希望在作用域结束之 前就强制释放变量的话,我们应该使用的是由标准库提供的 std::mem::drop 助:举 个例子,让我们来看看互斥器(mutexes),较为常见的共享内存并发原语之一。 使用互斥器实现同一时刻只允许一个线程访问数据 互斥器(mutex)是互相排斥(mutual exclusion)的缩写,因为在同一时刻,它只允许一个 线程访问数据。为了访问互斥器中的数据,线程首先需要通过获取互斥器的锁(lock)来表明 其希望访问数据。锁是一个数据结构,作为互斥器的一部分,它记录谁有数据的专属访问权。0 码力 | 562 页 | 3.23 MB | 26 天前3
共 1 条
- 1













