小编Ste*_*oss的帖子

C++中的快速跨平台进程间通信

我正在寻找一种方法来获得两个程序,以有效地相互传输大量数据,这需要在Linux和Windows上,在C++中工作.这里的上下文是P2P网络程序,其充当网络上的节点并且连续运行,并且其他应用程序(可能是游戏因此需要快速解决方案)将使用它来与网络中的其他节点通信.如果有更好的解决方案,我会感兴趣.

c++ p2p ipc

20
推荐指数
2
解决办法
1万
查看次数

LLVM结构返回优化

我想知道为什么LLVM无法优化以下IR代码(使用优化设置为'3'的PassManagerBuilder,以及使用LLVM的'opt'工具):

%GenericStruct = type { i32 }

define void @makeGenericStructOuter(%GenericStruct* noalias nocapture sret) {
entry:
  %1 = alloca %GenericStruct
  call void @makeGenericStructInner(%GenericStruct* %1)
  %2 = load %GenericStruct* %1
  store %GenericStruct %2, %GenericStruct* %0
  ret void
}

declare void @makeGenericStructInner(%GenericStruct* noalias nocapture sret)
Run Code Online (Sandbox Code Playgroud)

预期的代码是:

%GenericStruct = type { i32 }

define void @makeGenericStructOuter(%GenericStruct* noalias nocapture sret) {
entry:
  call void @makeGenericStructInner(%GenericStruct* %0)
  ret void
}

declare void @makeGenericStructInner(%GenericStruct* noalias nocapture sret)
Run Code Online (Sandbox Code Playgroud)

目前没有优化可用于处理此案例吗?或者我没有制作(这个代码是从我正在开发的前端产生的)正确的IR,它将允许优化?

在建议之前,我不能生成按值返回的代码,因为这些函数必须可以从不知道'GenericStruct'的大小或内容的其他模块/库中调用(并且它们会在本地声明'TestClass'为'struct不透明').

optimization return-value llvm

9
推荐指数
1
解决办法
1066
查看次数

使用Checked Exceptions设计语言

我很清楚关于检查异常是否是一个好主意的整个论点,我认为它们是......但这不是这个问题的重点.我正在设计一个相当简单的编译OOP语言,我决定使用已检查的异常作为一种返回错误的方法,而不会返回返回错误代码的C路由.

我正在寻找一些有关如何改进已检查异常的Java模型以消除其大多数不良方面的信息,可能是语法更改或略微更改实际功能.对检查异常的主要批评之一是,懒惰的程序员可能会吞下它们,因此不会出现错误.

也许它可以是可选的捕获异常,因此如果没有捕获,程序会崩溃?或者也许可以有特定的表示法来表示没有处理异常(比如C++虚函数'= 0'表示法)?或者,如果异常处理程序为空,我甚至可能导致程序崩溃(虽然这可能会让程序员对该语言不熟悉)

try ... catch语法怎么样,你认为可以用更简洁的方式表达异常被捕获吗?该语言将使用垃圾收集器,就像Java一样,所以是否需要finally子句?最后,还有哪些其他缺点可以检查异常以及存在哪些潜在解决方案(如果有的话)?

language-design exception

7
推荐指数
2
解决办法
1014
查看次数

标签 统计

c++ ×1

exception ×1

ipc ×1

language-design ×1

llvm ×1

optimization ×1

p2p ×1

return-value ×1