Как я могу иметь несколько потоков, работающих на один и тот же цикл 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;
}