并发(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