---
source_url: https://docs.dolphindb.cn/zh/funcs/c/createIPCInMemoryTable.html
fetched_at: 2026-05-19T09:16:29Z
category: funcs
title: createIPCInMemoryTable
sha1: 4808cde905c2b99b60829ab81c8ea05cb55be580
---

# createIPCInMemoryTable

## 语法

`createIPCInMemoryTable(size, tableName, columnNames,
columnTypes)`

## 详情

创建一个跨进程共享内存表的句柄。跨进程共享内存表通常作为流计算的输出表。在对时延要求极高的场景下，用户进程通过插件直接访问共享内存获取数据，极大减小了 TCP
等网络传输的时延。

跨进程共享内存表通过共享内存（由操作系统管理）进行跨进程通信。共享内存表仅支持在同一物理机内共享，不支持在集群不同物理节点间进行共享。

跨进程共享内存表支持读写，但不支持对跨进程共享内存表的表结构进行修改。向跨进程共享内存表写数据的方法，与普通内存表一致。若一次性插入的数据量大于共享内存，系统会抛出异常。

- 读写机制：将写入共享内存的进程作为生产者，从共享内存中读取数据的进程作为消费者。一次写入的数据将作为一个整体，供一次读取消费，且读进程依次按顺序对写入的数据进行消费。例如：第一写入
  100 条数据，第二次写入 200 条数据，则第一次会读到 100 条数据，第二次会读到第二批写入的 200
  条数据，以此类推。读取数据时，共享内存表中的所有数据均已被消费，则读进程会被阻塞，直到有新写入的可消费数据时，才能将数据读出。

DolphinDB
支持多进程并发写入共享内存表，以及在写入的同时进行读操作。但注意，只能同时存在一个读进程。参考上述读写机制，读取是一次性的，若不同进程并发读取，将会得到不同阶段写入的数据。

注：

此函数仅适用于 Linux 系统。

## 参数

**size** 整数，表示 table 能缓存的记录数。该值必须大于 1,000,000，否则系统自动取 1,000,000。

**tableName** 字符串，表示跨进程共享内存表的名称。

**columnNames** 字符串向量，用于指定表的列名。

**columnTypes** 向量，表示每列的数据类型。可使用表示数据类型的系统保留字或相应的字符串。

## 返回值

一个共享内存表句柄。

## 例子

创建一个跨进程共享内存表，并作为流数据订阅的输出表。

```dolphindb
share streamTable(10000:0,`timestamp`temperature, [TIMESTAMP,DOUBLE]) as pubTable
ipc_t = createIPCInMemoryTable(1000000, "ipc_table", `timestamp`temperature, [TIMESTAMP, DOUBLE])
def shm_append(mutable table, msg) {
   table.append!(msg)
}
subscribeTable(tableName="pubTable", actionName="act3", offset=0, handler=shm_append{ipc_t}, msgAsTable=true)
// 写入数据

n = 200
timestamp = 2022.01.01T09:00:00.000 + 1..n
temp = 30 + rand(5.0,n)

tableInsert(pubTable,timestamp,temp)
```
