以下是一个使用pthread_create启动多个线程处理同一块buffer并在所有线程处理完成后释放buffer的示例代码:

#include <iostream>
#include <pthread.h>
#include <vector>

// 定义全局变量和互斥锁
char* buffer = nullptr;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

// 线程处理函数
void* threadFunction(void* arg) {
    // 获取buffer的指针
    char* data = static_cast<char*>(arg);

    // 对buffer进行处理,这里仅打印buffer内容
    std::cout << "Thread " << pthread_self() << " processing buffer: " << data << std::endl;

    // 释放buffer内存
    pthread_mutex_lock(&mutex);
    delete[] data;
    pthread_mutex_unlock(&mutex);

    return nullptr;
}

int main() {
    // 创建线程ID数组
    std::vector<pthread_t> threadIds;

    // 创建buffer并复制数据
    buffer = new char[100];
    strcpy(buffer, "Hello, World!");

    // 启动多个线程处理同一块buffer
    for (int i = 0; i < 5; i++) {
        pthread_t threadId;
        pthread_create(&threadId, nullptr, threadFunction, buffer);
        threadIds.push_back(threadId);
    }

    // 等待所有线程结束
    for (auto& threadId : threadIds) {
        pthread_join(threadId, nullptr);
    }

    // 释放buffer内存
    delete[] buffer;

    return 0;
}

在该示例中,通过创建一个全局的buffer指针和互斥锁,多个线程可以同时访问和处理buffer。每个线程在处理完buffer后,通过互斥锁保证对buffer的释放操作是互斥的。最后在主线程中等待所有线程结束后,释放buffer的内存

利用pthread_create启动多个线程处理同一块buffer并在所有线程处理完成后释放buffer给出C++代码示例

原文地址: http://www.cveoy.top/t/topic/h71N 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录