linux 终端 多线程字符打印的问题

我现在在写一个字符界面下的农场,在界面打印模块上我想用多线程,具体就是
主线程一直等待接收用户操作,并执行这些操作;然后还有一个线程每1秒刷新打印一次土地,其他线程用于打印商店、仓库背包等。
但终端上只有一个光标,我的问题是当这些线程同时执行时 比如 主线程在用户在输入操作的时候,土地刷新了,这里是把正在接收用户操作的光标移到到土地上去刷新,然后回来继续接收用户操作,还是两个线程 各自拥有各自的光标呢?换句话说就是多个线程之间是否会因为只有这一个光标的原因而产生冲突。

我这里的刷新是在原有的基础上覆盖打印的
因为我对多线程不了解,这里想边看边写,又害怕最终实现不了,所以想请教一下大家
可能我表达的不太准确,大家对问题有什么不懂得可以提出来,在线等 谢谢

主要理解在fork函数。
你可以参考

这会产生分支,
fork会产生一个子进程。
根据fork的返回值的不同运行不同的代码。
在子进程返回值是0,而父进程就是调用这个函数的进程中返回的则是进程的ID也就是>0。
所以在子进程中执行
pthread_attr_init(&attr);
pthread_create(&tid,&attr,runner,NULL);
pthread_join(tid,NULL);
printf("CHILD:value=%d",value);
这个子进程会启动一个线程
void*runner(void*param){
value=5;
pthread_exit(0);
}
让value=5;
所以输出
CHILD:value=5;
而父进程则执行
wait(NULL);
printf("PARENT:value=%d",value);
由于wait()所以它会暂停父进程,等待子进程结束。
子进程结束后,然后父进程运行输出
PARENT:value=0
至于为什么是0,因为子进程和父进程的数据是在内存中各有一份的。
子进程只是改变了它那份。父进程中还是0.

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela
温馨提示:答案为网友推荐,仅供参考
相似回答