在编程中,我们经常会听到并发(Concurrency)和并行(Parallelism)这两个词。虽然这两个词在日常用语中可能被互换使用,但在编程中,它们确实有不同的含义。了解这两个概念之间的区别对于编写高效的、可扩展的代码至关重要。让我们深入探讨并发和并行。
1. 并发(Concurrency)
并发是指两个或更多的任务可以在重叠的时间段内启动、运行,并在某个时间点完成。并发不一定意味着这些任务实际上是同时运行的。例如,在单核CPU上,这些任务可能会交替执行,而我们感觉它们似乎在同时运行。这称为并发执行,即处理器通过在任务之间快速切换来实现并发。
并发主要在处理I/O-bound任务(如网络,磁盘I/O等)时有用,可以在一个任务等待I/O完成时运行另一个任务。
以下是一个简单的并发示例,这是一个使用C++的std::thread
实现的:
#include <iostream>
#include <thread>
void foo() {
// 执行一些工作
std::cout << "Task from function.\n";
}
int main() {
std::thread thread(foo);
// 执行其他任