0

我有一个在 Linux 上用 C++ 编写的服务器客户端应用程序。当客户端连接到我的服务器时,服务器会生成一个线程,等待客户端发送服务器命令以执行。这些命令取决于操作系统。客户端与服务器对话的线程调用全局函数来执行客户端所需的命令。因此,对于客户端发送到服务器以执行的每个依赖于操作系统的命令,我必须有两个函数。所有这些全局函数都定义在与主线程函数相同的头文件中。对于不同的操作系统,所有这些功能都变得有点混乱。我的想法是编写两个名为 WindowsFuncs 和 LinuxFuncs 的类,它们具有静态成员函数,它们为该类设计的操作系统执行所需的命令。

4

1 回答 1

0

这听起来不像是线程问题。听起来你可以使用简单的继承。

使用类似的东西

abstract class OSMethods {
  void listDir();
}

class OSMethodsLinux : OSMethods {
  void listDir() { system.exec("ls"); }
} 
class OSMethodsWin : OSMethods {
  void listDir() { system.exec("dir"); }
}

然后服务器客户端处理代码有类似的方法

  void accept(Socket s, OSMethods m) {
     s.readCommand();
     m.listDir();  // or whatever
  }

确保传递正确的实例以接受 Linux 或 Win 类。所以没有静态方法。

一般来说,我发现你的程序中不需要静态方法(main 除外),除非你在做聪明的事情,大多数事情只是不需要它们,它们会导致设计不太灵活。

于 2010-12-11T02:53:34.460 回答