我在读纸通过奥利韦拉和Cook"与结构化图形函数式编程"(幻灯片, 纸草案.)提出一种优雅的解决方案来编码在使用递归绑定在PHOAS图状结构共享和周期.
例如,具有后沿的流可以编码为:
-- 'x' is the element type, 'b' is the PHOAS's abstract variable:
data PS0 x b = Var0 b
| Mu0 (b -> PS0 x b) -- recursive binder
| Cons0 x (PS0 x b)
-- Closed terms:
newtype Stream0 x = Stream0 { runS0 :: forall b. PS0 x b }
-- Example : [0, 1, 2, 1, 2, 1, 2, ...
exPS0 = Stream0 $ Cons0 0 (Mu0 $ \x …Run Code Online (Sandbox Code Playgroud) Linux的异步文件IO(AIO)的语义在io_setup(2),io_submit(2)和io_getevents(2)的手册页中有详细描述.
但是,如果没有在块IO子系统中潜水,实施的操作方面就不那么清楚了.aio_context分配一个队列,用于将io_events发送回用户空间中的特定客户端.但还有更多吗?
更广泛地说,应该为哪些硬件资源(NUMA节点,CPU核心,物理驱动器,文件系统和文件)分配aio_contexts,以及粒度级别?
也许它并不重要,aio_contexts只不过是用户空间程序的抽象.我问,因为我在同时读取多个文件时观察到性能下降,每个文件都有自己的aio_context,而手动循环序列化块请求到单个aio_context.
我的CMake项目编译了一个与大型静态库链接的Python .so / .dylib扩展模块。我想用对符号隐藏的可见性来编译子项目的静态库:它将允许链接器(或LTO优化器)丢弃我的python模块未使用的符号。
最好的方法是CXX_VISIBILITY_PRESET在子项目的静态库目标上使用和朋友。但是,子项目使用3.1.0版中的策略,方法是声明:
cmake_minimum_required (VERSION 3.1.0)
Run Code Online (Sandbox Code Playgroud)
该策略CMP0063 NEW: Honor visibility properties for all target
types.仅从版本3.3开始引入,因此set_target_properties不起作用。
我的项目需要CMake 3.3,但是我无法控制子项目。
我想避免打补丁子项目CMakeLists.txt,但目前看不到其他方法。
任何的想法 ?