cuốn sách gpt4 ai đã làm

Có vẻ như pthread_create không thể lấy đúng tham số

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 03:27:16 26 4
mua khóa gpt4 Nike

Khi tôi chạy đoạn mã sau, bản in có vẻ không chính xác.

void thread_Calc(int *pos) {
printf("đã nhận %d\n", *pos);
sig = -1;

mandel_Calc(&slices[*pos],maxIterations,&res[(*pos)*slices[*pos].imSteps*slices[*pos].reSteps]);

bộ đếm++;
mảng[bộ đếm] = *pos;
sig = *pos;
}


int main(int argc, char *argv[]) {

while (WinH % nofslices != 0) { nofslices++;}

slice_height = WinH/nofslices;

cấp độ = 1;

trong khi (1) {

for (i=0; i
mảng[i] = -1;
}

y=0;
sig = -1;
bộ đếm = -1;
for(i=0; i
printf("Đang truyền %d\n", i);

check=pthread_create(&worker[i], NULL, (void*)thread_Calc, (void*)(int *)&i);
nếu (kiểm tra!=0) {
printf("Lỗi trong pthread_create\n");
return 0;
}

trong khi (sig==-1||mảng[bộ đếm]==-1){

}
}
}
}

(Đây chỉ là một phần mã của tôi, vì vậy giả sử mỗi biến đều đúng và có giá trị).

我得到的结果是这样的:

Vượt qua 1
Vượt qua 2
nhận được 2
nhận được 2
Vượt qua 3
Vượt qua 4
nhận được 4
nhận được 4
Vượt qua 5
Vượt qua 6
Vượt qua 7
Vượt qua 8
Đạt 9

Có vẻ như không phải lúc nào tôi cũng có thể chuyển các tham số chính xác trong pthread_create hoặc thứ gì đó.

câu trả lời hay nhất

@Andrew nói đúng. Bạn đang truyền một con trỏ chứ không phải một giá trị, vì vậy ngay khi bạn thay đổi "i" trong luồng chính, giá trị trong tham số mà luồng tạo nhận được sẽ thay đổi. Bạn cần tạo một bản sao và chuyển nó vào chuỗi.

Nhìn thấy pthread_create: truyền một số nguyên làm đối số cuối cùng

Về c - có vẻ như pthread_create không thể lấy đúng tham số, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/40115464/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress