đây là nỗ lực đầu tiên của tôi trong luồng trong C. Tôi đang tạo bộ đệm được bao quanh theo chiều tròn. Tôi biết làm thế nào để tạo ra các chủ đề, nhưng tất cả những ví dụ tôi đã thấy chức năng chỉ có ren mà chấp nhận một tham số có hiệu lực, nhưng tiếc là đặc điểm kỹ thuật công nhân của tôi đòi hỏi tôi phải sử dụng ba, như thể hiện ở đây:Chuyển nhiều đối số đến hàm chuỗi từ pthread_create
void bufferRead(BoundedBuffer* buffer, char* data, int count) {
pthread_mutex_lock(&buffer->mutexBuffer);
<snip>
pthread_mutex_unlock(&buffer->mutexBuffer);
}
Đây là pthread_create của tôi tuyên bố
pthread_create(&buffer.readThread, NULL, (void *)bufferRead, &readParams)
Và readParams tôi struct/tập
struct readThreadParams {
BoundedBuffer b;
char* data;
int count;
};
struct readThreadParams readParams;
readParams.b = buffer2;
readParams.data = out_array;
readParams.count = in_size;
Bất kỳ lời khuyên về cách gán mỗi thông số của struct sau khi đi qua cho b Hàm ufferRead sẽ được đánh giá cao.
-1 chuyển biến cục bộ sang một chuỗi khác –
Nếu đó là biến cục bộ trong chính, đó không phải là vấn đề. Nếu bạn thoát khỏi chính thì chương trình của bạn sẽ chấm dứt để biến luôn luôn tồn tại trong khi chương trình của bạn đang chạy. – jcoder
@jcoder Rời khỏi 'main' không có nghĩa là chấm dứt chương trình ngay lập tức. Và biến tự động (không phải đống, không tĩnh) cho giao tiếp giữa các luồng là một ý tưởng đáng ngờ nhất. –