我参加了一场挑战我写一个非常复杂的文件的比赛。完成第一阶段后,我不得不完善我的代码。我面临模块化设计的问题,这是如何将代码分为有效使用内存的较小,更简单的模块。在我详细介绍此概念之前,让我解释一下您可能需要知道的一些术语。
内存管理是编程的重要方面,因为它会影响程序如何使用可用的内存资源。内存管理涉及用于不同目的的分配,使用和释放内存,例如存储数据,执行代码以及过程之间的通信。
在本文中,我们将比较两种内存管理技术:外部和共享内存。 Extern是一个关键字,允许程序访问另一个文件中定义的全局变量或函数。共享内存是一种允许多个进程访问同一内存区域进行过程间通信的机制。
extern :
``外部关键字''在诸如C和C ++之类的编程语言中使用,以声明其他文件中定义的变量或函数。当将变量或函数声明为外部时,这意味着可以在项目中的另一个文件中找到其定义。使用外部的目的是提供一个正向声明,以便编译器知道变量或函数存在并且可以使用,即使其定义位于其他地方。
使用外部关键字允许跨项目中的文件共享可变。例如,如果您在一个源文件中定义了一个变量,并且要在另一个源文件中访问它,则可以将其声明为第二文件中的外部。这告诉编译器,该变量是在另一个文件中定义的,应在编译过程中适当链接。通过使用外部,您可以在多个文件上共享变量和功能,从而启用模块化编程和代码重复使用。
共享内存:
共享内存是指可以通过多个过程或线程同时访问的内存区域。在并发编程和过程间通信(IPC)中,共享内存用于有效地在过程之间交换数据。进程可以直接从共享内存区域读取并写入消息。
,而不是使用消息传递或其他形式的通信。两者都是一样的
尽管您可以得出结论,外部是使用共享内存的安全API,并限制了如何使用外部的限制。
何时使用“ Extern”:
在单个程序中共享变量时,请使用“ extern”,尤其是当需要通过多个源文件访问数据时。
它通过在整个程序中使用一个变量的一个实例来简化数据共享并确保一致性。
“ Extern”适用于该程序的多个组件需要访问常见数据而不创建单独副本的方案。
何时使用共享内存:
当在同一台计算机上运行的独立进程之间需要通信时,请使用共享内存。
它通过允许它们访问和共享共同的内存空间来实现数据交换和合作。
在数据交换,协调或并行处理之类的任务中,共享内存是有益的。
最终的想法和建议:
“ Extern”和共享记忆都在不同的情况下起重要作用。专注于单个程序中的数据共享以提高代码模块性和效率时,请选择“ Extern”。
另一方面,在处理独立过程之间的过程间通信和合作时,选择共享内存。
了解这些机制之间的区别将有助于开发人员根据其项目的特定要求做出明智的决定。