Как я могу иметь несколько потоков, работающих на один и тот же цикл for в C, который в свою очередь вызывает функцию

Этот код является частью nvme-cli(он построен на linux api)

Я пытаюсь создать опцию, чтобы повторить команду nvme сказать n раз с p количество потоков.

Например, если я скажу повторить 50 раз с 5 нитями, то каждый из 5 потоков должен повторяться 10 раз по отдельности.

Для этого мне нужно запустить цикл for с несколькими потоками. Поскольку я новичок в многопоточности, я подумал об использовании P-потоков. Могу ли я узнать синтаксис для этого?

int* identify(int fd, int name_space, void *ctrl, int cns, int rc)
{
    int *err,count=0;
    struct nvme_admin_cmd cmd;
    static const char *perrstr;
    memset(&cmd, 0, sizeof(cmd));
    cmd.opcode = nvme_admin_identify;
    cmd.nsid = name_space;
    cmd.addr = (__u64)(uintptr_t)ctrl;
    cmd.data_len = 4096;
    cmd.cdw10 = cns;
    for(count=0; count<rc; count++){
        *(err+count) = ioctl(fd, NVME_IOCTL_ADMIN_CMD, &cmd);
    }
    return err;
}

0 ответов

Другие вопросы по тегам