Difference between revisions of "Zh/Documentation/DevGuide/ProUNO/Characteristics of the Interprocess Bridge"
From Apache OpenOffice Wiki
< Zh | Documentation
(New page: {{Documentation/DevGuide/ProUNOTOC/Zh |ProUNO2b=block |ProUNO2bUNOIC=block |ShowPrevNext=block |PrevPage=Zh/Documentation/DevGuide/ProUNO/Importing a UNO Object |NextPage=Zh/Documentation/...) |
|||
(2 intermediate revisions by one other user not shown) | |||
Line 6: | Line 6: | ||
|NextPage=Zh/Documentation/DevGuide/ProUNO/Opening a Connection | |NextPage=Zh/Documentation/DevGuide/ProUNO/Opening a Connection | ||
}} | }} | ||
+ | {{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/{{SUBPAGENAME}}}} | ||
{{DISPLAYTITLE:进程间桥的属性}} | {{DISPLAYTITLE:进程间桥的属性}} | ||
− | |||
Line 19: | Line 19: | ||
− | {{ | + | {{Warn|尽管 UNO <tt>oneway</tt> 功能的规范和实现没有出现常规问题,但在几种 API 远程使用方案中,<tt>oneway</tt> 调用会导致 {{PRODUCTNAME}} 中发生死锁。因此,请不要使用新的 {{PRODUCTNAME}} UNO API 引入新的 oneway 方法。}} |
Line 43: | Line 43: | ||
作为连接到办公软件的 UNO URL。 | 作为连接到办公软件的 UNO URL。 | ||
− | {{ | + | |
+ | {{Warn|异步模式会导致 {{PRODUCTNAME}} 中发生死锁。如果远程桥的一端是 {{PRODUCTNAME}},我们建议不要激活它。}} | ||
{{PDL1}} | {{PDL1}} | ||
[[Category:文档/开发者指南/专业 UNO]] | [[Category:文档/开发者指南/专业 UNO]] |
Latest revision as of 08:43, 13 July 2018
整个桥是线程安全的,并且允许多个线程执行远程调用。桥内的分发线程不会阻塞,因为它从不执行调用,而是将请求传送到工作线程。
- 同步调用通过连接发送请求,并使请求的线程等待应答。所有具有返回值(即 out 参数)或抛出非 RuntimeException 异常的调用必须是同步的。
- 异步(或
oneway
)调用通过连接发送请求并立即返回,而不等待应答。目前在 IDL 接口中,使用 [oneway] 修饰符来指定一个请求是同步还是异步。
尽管 UNO oneway 功能的规范和实现没有出现常规问题,但在几种 API 远程使用方案中,oneway 调用会导致 OpenOffice.org 中发生死锁。因此,请不要使用新的 OpenOffice.org UNO API 引入新的 oneway 方法。 |
同步请求可以保证线程标识。当进程 A 调用进程 B,而进程 B 又调用进程 A 时,进程 A 中等待的同一线程将接管新的请求。这就避免了再次锁定同一互斥体时出现的死锁。对于异步请求,不可能发生这样的情况,因为进程 A 中没有等待的线程。这类请求在新的线程中执行。因而保证了两个进程之间的一系列调用。如果将来自进程 A 的两个异步请求发送到进程 B,第二个请求将会等待,直到完成第一个请求。
尽管远程桥支持异步调用,但此功能在默认情况下被禁用。每个调用都是同步执行。UNO 接口方法的单向标志将被忽略。但是,桥可以在启用单向功能的模式下启动,因此可以像异步调用那样执行标有 [oneway]
修饰符的调用 。
为此,必须通过 ',Negotiate=0,ForceSynchronous=0'
扩展远程桥两端连接字符串中的协议部分。
例如:
soffice “-accept=socket,host=0,port=2002;urp,Negotiate=0,ForceSynchronous=0;”
用于启动办公软件,而
"uno:socket,host=localhost,port=2002;urp,Negotiate=0,ForceSynchronous=0;StarOffice.ServiceManager"
作为连接到办公软件的 UNO URL。
Content on this page is licensed under the Public Documentation License (PDL). |