当我运行gcc test.c -o test.o -lpthread -lrt
时,我正在使用test.o
编译我的代码。我已阅读手册页,我认为我的代码应该成功创建一个新线程。是否有任何理由说创建的线程无法打印到控制台?
#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <sys/types.h>
void* thd ();
pthread_t tid;
int main()
{
int i;
i = pthread_create(&tid, NULL, &thd, NULL);
}
void* thd ()
{
printf("hello");
}
答案 0 :(得分:2)
您的程序创建一个线程然后终止,永远不会让线程有机会完成任何有用的工作。我们没有理由打印任何东西。
答案 1 :(得分:2)
它不会打印因为你将在打印之前结束(没有连接,你不会等待线程结束)
public static double LoanCalculator(double loan, double rate, int payments)
{
double r = rate/12;
double monPay = (loan * r * Math.pow(1+r, payments))/((Math.pow(1+r, payments))-1);
return monPay;
}
答案 2 :(得分:1)
就像David Schwartz所说,主线程需要等待子线程完成。在main()中使用pthread_join来做到这一点,如下所示:
#include <sys/types.h>
void *thd(void *);
pthread_t tid;
int main()
{
int i;
i = pthread_create(&tid, NULL, &thd, NULL);
pthread_join(tid, NULL);
return 0;
}
void *thd(void *unused)
{
printf("hello\n");
return 0;
}