我对线程和叉子比较陌生。所以为了更好地理解它们,我一直在编写简单的程序。我写了两个程序的小程序之一,一个在两个进程上打印一个计数器,另一个有两个线程。我注意到的是,叉子以交错方式打印计数器,而线程则打印一个线程的计数器,然后是其他线程的计数器。所以线程不是那么并行,而是表现得更串行,这是为什么?难道我做错了什么?
另外, pthread_join 到底是做什么的?即使我不做 pthread_join 程序也会以类似的方式运行。
这是我的线程代码
void * thread1(void *a){
int i =0;
for(i=0; i<100; i++)
printf("Thread 1 %d\n",i);
}
void * thread2(void *b){
int i =0;
for(i=0; i<100; i++)
printf("Thread 2 %d\n", i);
}
int main()
{
pthread_t tid1,tid2;
pthread_create(&tid1,NULL,thread1, NULL);
pthread_create(&tid2,NULL,thread2, NULL);
pthread_join(tid1,NULL);
pthread_join(tid2,NULL);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的 fork 代码
int main(void)
{
pid_t childPID;
childPID = fork();
if(childPID >= 0) // fork was successful
{
if(childPID == 0) // child process
{ int i;
for(i=0; i<100;i++)
printf("\n Child Process Counter : %d\n",i);
}
else //Parent process
{
int i;
for(i=0; i<100;i++)
printf("\n Parent Process Counter : %d\n",i);
}
}
else // fork failed
{
printf("\n Fork failed, quitting!!!!!!\n");
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:如何使线程程序的行为更像 fork 程序?即柜台打印交织。