我已经创建了一个简单的睡眠排序算法:
#include <stdio.h>
#include <time.h>
#include <pthread.h>
#define ARR_SIZE 10
void *sleepSort(void *arg) {
usleep(1000 * *(int*) arg);
printf("%d ", *(int*) arg);
return NULL;
}
int main(void) {
srand(time(NULL));
int arr[ARR_SIZE];
for (int i = 0; i < ARR_SIZE; i++)
arr[i] = rand() % 100;
pthread_t thr[ARR_SIZE];
for (int i = 0; i < ARR_SIZE; i++)
pthread_create(thr + i, NULL, sleepSort, (void *)(arr + i));
getchar();
return 0;
}
但是,当我从Linux控制台运行它时,在输入新字符之前不会打印任何内容.然而,我已经修改了我的程序,在每个打印上添加一个换行符,如果它像预期的那样工作,我不明白为什么.