Chào anh chị, em là sinh viên năm nhất đang học nhập môn hệ điều hành đến đoạn lập trình với thread, thầy có gửi một đoạn code để tụi em tham khảo, tuy nhiên khi chạy thử thì visual báo lỗi ở hàm void rằng “control reaches end of non-void function”. Em thử thêm return 0 vào hàm void thì mới biên dịch được. Em hơi thắc mắc về void * khác void chỗ nào và tại sao phải return ạ.
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
void *thr1(void *ar)
{
printf("This is thread %d\n", *((int *)ar));
sleep(2);
}
int main(int argc, char *argv[])
{
int i;
int num = atoi(argv[1]);
pthread_t tid[num];
for (i = 0; i < num; i++)
{
pthread_create(&tid[i], NULL, thr1, (void *)&tid[i]);
}
return 0;
}

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?