并发(Concurrency)是计算机科学中的一个重要概念,它指的是在同一时间段内,多个任务或操作可以同时执行。在多核处理器和分布式系统中,并发是实现高效资源利用和提升性能的关键。
以下是一些并发基础的概念和要点:
- 线程(Thread):线程是程序执行的最小单元,是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
- 进程(Process):进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位。
- 互斥锁(Mutex):互斥锁是一种同步机制,用于保护共享资源,确保同一时间只有一个线程可以访问该资源。
- 信号量(Semaphore):信号量是一种更通用的同步机制,可以用于实现多种同步策略,如互斥、同步等。
- 条件变量(Condition Variable):条件变量用于线程间的通信,允许线程在某些条件满足时进行等待,而在条件不满足时继续执行。
实例分析
以下是一个简单的例子,展示如何使用互斥锁来保护共享资源:
#include <pthread.h>
#include <stdio.h>
int counter = 0;
pthread_mutex_t lock;
void* increment(void* arg) {
for (int i = 0; i < 1000; i++) {
pthread_mutex_lock(&lock);
counter++;
pthread_mutex_unlock(&lock);
}
return NULL;
}
int main() {
pthread_t threads[10];
pthread_mutex_init(&lock, NULL);
for (int i = 0; i < 10; i++) {
pthread_create(&threads[i], NULL, increment, NULL);
}
for (int i = 0; i < 10; i++) {
pthread_join(threads[i], NULL);
}
printf("Counter: %d\n", counter);
pthread_mutex_destroy(&lock);
return 0;
}
扩展阅读
更多关于并发编程的知识,可以参考以下链接:
Concurrency