Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“的目的”;锁ID";在自定义ASP.NET会话存储示例中_Asp.net_Multithreading_Session_Concurrency_Locking - Fatal编程技术网

“的目的”;锁ID";在自定义ASP.NET会话存储示例中

“的目的”;锁ID";在自定义ASP.NET会话存储示例中,asp.net,multithreading,session,concurrency,locking,Asp.net,Multithreading,Session,Concurrency,Locking,冒着暴露自己无知的风险,我承认我对Microsoft示例中的lock\u id和lock列的用途感到困惑。我知道这个模式是为多线程环境和许多应用程序设计的,因此PK包括会话标识符和应用程序标识符是有意义的,允许应用程序重用会话标识符。没有意义的是,lock\u id似乎没有引用外键约束 由于微软没有提供太多关于lock\u id的性质和原因的信息,我不得不假设这是显而易见的。直观地说,指示会话在给定时间是否由特定的应用程序服务器处理是有意义的,但我看不出这在物理上如何转化为模式 感谢您的澄清。F

冒着暴露自己无知的风险,我承认我对Microsoft示例中的
lock\u id
lock
列的用途感到困惑。我知道这个模式是为多线程环境和许多应用程序设计的,因此PK包括会话标识符和应用程序标识符是有意义的,允许应用程序重用会话标识符。没有意义的是,
lock\u id
似乎没有引用外键约束

由于微软没有提供太多关于
lock\u id
的性质和原因的信息,我不得不假设这是显而易见的。直观地说,指示会话在给定时间是否由特定的应用程序服务器处理是有意义的,但我看不出这在物理上如何转化为模式


感谢您的澄清。

FWIW,这个答案是猜测和知识的同等部分

猜测:

数据库架构由名为
SessionStateStoreProvider
的类或其子类之一使用。特别是,它定义了一个名为:

现在,我不确定它在模式中接受的参数是否直接映射到存储在模式中的列(我不是说它是外星人,而是…)

知识:

至于它们的用途,答案在于你最初的问题:

我知道这个模式是为多线程的消费而设计的 环境和许多应用程序

在单个应用程序中,可能有多个线程为同一个会话id提供服务(请考虑是否有一个asp.net网站看到单个用户同时加载两个页面)。NET会话状态的默认行为是锁定其中一个页面的会话id,并为其分配随机锁id。当该页完成时,它将释放锁,行中的下一个线程将抓住它并分配一个新的锁id。通常,这都会发生在内存中,但是如果您将会话状态模型持久化到数据库中,那么锁id也会消失是有意义的。支持此行为是除了应用程序id和会话id之外还需要锁id的原因