C 中的多线程 - 线程可以运行逻辑,导致停止主线程执行吗?

时间:2021-02-18 14:37:12

标签: c multithreading sockets

这里是初学者。 当服务器面临网络问题(无网络)时,我需要处理行为 有没有可以处理的信号处理程序?我非常确定没有这样的事情。但是,可以配置吗?

如果没有,我计划在同一系统上的两台服务器之间建立一个 ping 机制。

serverA 的架构(中央服务器,包含所有注册服务器的列表),为简单起见,仅使用 1 个额外的服务器

#----header files
main()
{
 --serverconfig details
 while(1)
 --server_run()
}

类似的,注册到服务器 A 的服务器 B 具有相同的架构。 现在,为了应对网络故障情况,我计划拥有一个多线程中央服务器(A)。并在 serverB 的 while(1) 循环中插入一个 ping 函数。

如果服务器 A 没有收到来自服务器 B 的任何 ping,我不知道如何结束程序。

服务器 A

--headerfiles
main(){
--serverconfig
Thread1withreceivePing()
while(1){
--server_run()
}
}

服务器 B

--headerfiles
main(){
--serverconfig

while(1){
Thread1withSendPing()
--server_run()
}
}

ServerA 程序在每 2 分钟没有收到 ping 时是否可以终止?请告诉我。

1 个答案:

答案 0 :(得分:0)

<块引用>

ServerA 程序在每 2 分钟没有收到 ping 时是否可以终止?

答案是肯定的。所有线程共享一组全局变量(具有静态存储的变量)。这意味着一个线程可以改变一个全局变量的值,而主线程只需要定期检查它即可。

或者,线程可以调用退出函数。但这看起来像是一个中止过程,因为其他线程可能会在不安全的情况下被强制中断。

相关问题