我知道这个问题已经被问过了,至少有here个.

但是没有一个令人满意的答案,至少对我来说不是.关于与非托管代码的互操作,有很多关于编组的讨论,但是如何从一个线程编组到另一个线程,就像我们在.NET中有时必须做的那样.

这让我不禁要问,到底什么是编组?当您给出编组的定义时,您将如何定义它,以便解释互操作性的情况,以及在线程之间"编组"的情况?

推荐答案

计算通常需要将数据从一个站点移动到另一个站点,并且没有任何共享内存.因此,一个计算向另一个计算发送包含数据的消息.

如果数据任意复杂,该如何在消息中发送?

编组是将数据字段或一整套相关 struct 转换为可在消息中发送的序列化字符串的过程.马歇尔二进制

当然,如果你"整理"数据,你必须最终"整理",这是读取串行流和重建传输数据( struct )的过程.

库中通常有(取消)编组 routine 用于实现此目的,有时甚至有工具可以生成(取消)编组 routine 上发送/接收数据所需的所有调用.

.net相关问答推荐

安装特定主要版本的DotNet SDK最新版本

如何在PowerShell中隐藏任务延迟输出?

如何为多种文件类型设置 FileSystemWatcher 过滤器?

Gacutil.exe 成功添加程序集,但在资源管理器中无法查看程序集.为什么?

如何在没有抽象基类的情况下强制覆盖后代中的方法?

maxRequestLength 的最大值?

.Include() 与 .Load() 在 EntityFramework 中的性能

如何中止任务,如中止线程(Thread.Abort 方法)?

如何从 appsettings.json 中获取价值

为什么 LINQ .Where(predicate).First() 比 .First(predicate) 快?

什么是 Hashtable 的通用版本?

是否有 TLS 1.2 的 .NET 实现?

寻找 .NET 的命令行参数解析器

Dapper 是否支持 SQL 2008 表值参数?

单元测试 C# 保护方法

并发字典正确用法

SqlBulkCopy 的推荐批量大小是多少?

.NET 委托类型的正确命名约定?

C# 相当于 Java 的 Exception.printStackTrace()?

将控制台输出镜像到文件