Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 共享对象是否可以在后台运行自己的线程?_Linux_Multithreading_Shared Libraries - Fatal编程技术网

Linux 共享对象是否可以在后台运行自己的线程?

Linux 共享对象是否可以在后台运行自己的线程?,linux,multithreading,shared-libraries,Linux,Multithreading,Shared Libraries,我是Linux编程的初学者,我不确定我所期望的是否可行。如果有人能给我一些建议,我将不胜感激 我想做的是开发一个共享对象(.so文件),它可以被多个应用程序使用。如果其中一个应用程序调用共享对象中的初始化函数,将创建一个新线程来运行无限循环以接受传入事件。即使在初始化函数返回后,该线程仍将继续运行。因此,所有应用程序都可以继续将事件发送到此线程进行处理 我想知道这是否能够实现?任何想法都将不胜感激。正如评论中所指出的,这是无法做到的:您不能在另一个进程中直接调用函数。这就是RPC、IPC、web

我是Linux编程的初学者,我不确定我所期望的是否可行。如果有人能给我一些建议,我将不胜感激

我想做的是开发一个共享对象(.so文件),它可以被多个应用程序使用。如果其中一个应用程序调用共享对象中的初始化函数,将创建一个新线程来运行无限循环以接受传入事件。即使在初始化函数返回后,该线程仍将继续运行。因此,所有应用程序都可以继续将事件发送到此线程进行处理


我想知道这是否能够实现?任何想法都将不胜感激。

正如评论中所指出的,这是无法做到的:您不能在另一个进程中直接调用函数。这就是RPC、IPC、web服务等被发明的原因。

线程生活在进程的上下文中,当进程死亡时,线程就会死亡。两个进程不能共享一个线程。在共享对象中放置代码并不能神奇地实现这一点。您可能希望创建一个全新的进程,而不是线程(并使用常规可执行程序而不是共享对象来运行它)。也许不是,这很难说。也许你应该更详细地描述你的项目。谢谢n.m.,你的想法启发了我。我想做的是类似于在后台运行的数据处理服务器,多个应用程序可以向该服务器发送数据处理请求。虽然这可以通过实现一个真正的服务器来实现,但我认为这是一个相当沉重的负担,而且性能可能不足以进行实时数据处理。我想知道是否有一种方法可以提高性能,而不是通过网络发送请求,我更喜欢通过函数调用发送请求。可能吗?不,您不能在另一个进程(或线程)中调用函数。是什么让您认为使用真正的服务器会有较差的性能?你有没有测试过,发现它有缺陷?你试图在没有真实信息的情况下做出决定。Unix域套接字和管道非常有效。如果做不到这一点(但只有在尝试过之后),您可以尝试使用共享内存,如果有大量数据要传输,这会有所帮助。RPC是为了在其他主机上调用方法而发明的。Web服务的发明是为了与其他主机建立数据驱动的契约,这不应该依赖于实现(方法)。