一次函数设计讨论
近期在考虑对底层函数库进行一些重构,今天下午花了两个小时考量现有的函数库的接口设计,发现目前函数库的实现存在着一个普遍的问题:与特定的内存分配实现耦合的太紧。 我们的应用是多进程结构的,并使用了共享内存这种最快捷的IPC机制,鉴于此很多同事在实现一些数据结构或者算法时可能只考虑到了我们常见的应用场景-多进程共享,而对非共享内存分配的情况考虑不足。那如何将目前某些库函数实现与内存分配之间的强耦合解开呢?针对这道题我发起了一次mail讨论。 题目再重述一下:“目前底层库中的一些数据结构,比如xx_tree、xx_hash_table等,在它们的实现中都会有“分配内存空间”的需求,现有的实现多是直接调用已有的xx_shm_malloc和xx_shm_free在共享内存上动态申请和释放内存,但实际上有些场合我们并不需要在共享内存上分配内存,进程私有堆上的内存完全可以满足需求。如果让大家考虑修改目前xx_tree的实现或重新设计xx_tree的接口,以达到让xx_tree支持多种内存分配策略的目的,你是如额考虑的,请谈谈你的设计思路。" ...