查看: 106|回复: 1

c++ thread,如下代码,在线程中打印参数为什么会重复 ...

[复制链接]

1

主题

5

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2022-9-22 15:28:52 | 显示全部楼层 |阅读模式
#include
#include
#include
#include

    struct Data {
    int id;
};

class Thread {
    public:
    template
    Thread(Function &&f, Args &&...args) noexcept
        : internal_{ [func = std::forward(f), &args...]() {
            func(args...);
        } }
    {
    }

    private:
    std::thread internal_;
};

void func(Data *data)
{
    printf("                in thread, data: %p, id: %d\n", data, data->id);
}

int main()
{
    static Data data[8];
    std::vector threads;
    volatile int i = 0;
    for (i = 0; i < 8; i++) {
        data.id = i;
        printf("out thread, data: %p\n", &data);
        auto tmp = new Thread(func, &data);
        threads.emplace_back(tmp);
    }

    sleep(100);
    return 0;
}

out thread, data: 0x562bb497d040
out thread, data: 0x562bb497d044
                in thread, data: 0x562bb497d044, id: 1
out thread, data: 0x562bb497d048
                in thread, data: 0x562bb497d048, id: 2
out thread, data: 0x562bb497d04c
                in thread, data: 0x562bb497d04c, id: 3
out thread, data: 0x562bb497d050
                in thread, data: 0x562bb497d04c, id: 3
out thread, data: 0x562bb497d054
                in thread, data: 0x562bb497d054, id: 5
out thread, data: 0x562bb497d058
                in thread, data: 0x562bb497d054, id: 5
                in thread, data: 0x562bb497d058, id: 6
out thread, data: 0x562bb497d05c
                in thread, data: 0x562bb497d05c, id: 7
回复

使用道具 举报

4

主题

9

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2025-2-28 21:09:56 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表