У меня есть следующие структурыИнициализация массива структуры в C
typedef struct {
int buf[BUF_SIZE]; // the buffer
size_t len; // number of items in the buffer
pthread_mutex_t mutex; // needed to add/remove data from the buffer
pthread_cond_t can_produce; // signaled when items are removed
pthread_cond_t can_consume; // signaled when items are added
};
Изначально я просто инициализирует его следующим образом
buffer_t buffer = {
.len = 0,
.mutex = PTHREAD_MUTEX_INITIALIZER,
.can_produce = PTHREAD_COND_INITIALIZER,
.can_consume = PTHREAD_COND_INITIALIZER
};
Хотя я хотел бы, чтобы инициализировать массив buffer_t с этими значениями, хотя я не совсем уверен, как правильно это сделать.
Что-то вроде
buffer_t buffer[NUM_ARRAY] = {
.len = 0,
.mutex = PTHREAD_MUTEX_INITIALIZER,
.can_produce = PTHREAD_COND_INITIALIZER,
.can_consume = PTHREAD_COND_INITIALIZER
};
(который я понимаю, неверно)
Edit: Я закончил с использованием
buffer_t buffers[NUM_THREADS];
for (i = 0, i < 3, i ++) {
buffers[i] = (buffer_t) {
.len = 0,
.mutex = PTHREAD_MUTEX_INITIALIZER,
.can_produce = PTHREAD_COND_INITIALIZER,
.can_consume = PTHREAD_COND_INITIALIZER
};
}
Петля над каждым буфером в массиве ... Инициализировать его, как раньше ... Прибыль? – Samidamaru
@belgin Fish, предложили ли предлагаемое здесь решение петли на самом деле работать для вас? Я не думаю, что это сработает. –
Он скомпилирован, я до сих пор не дошел до сути использования буфера. Я обновил свой ответ с помощью решения, которое я использовал, не могли бы вы дать мне свой вклад? @BlueMoon –