小编Tim*_*ith的帖子

轮询锁定是否是实现关键部分的正确方法?

如果我有一个关键部分,我必须实现一个锁定它的方法.我看到了以下变体:

while(lock)
{
    //do nothing
}
lock = true;
// code of critical section
lock = false;
Run Code Online (Sandbox Code Playgroud)

但是,我对它持怀疑态度,因为从理论上讲,几个线程可以执行while(lock)(检查并看到它是假的),并且一起进入临界区,因为while(lock)并且lock = true;不是在一个连续的块中执行.我错了吗?或者这确实是一种不安全的方法?

c locking critical-section

3
推荐指数
1
解决办法
246
查看次数

在F#中,这些看起来像什么的东西是什么?

在F#中,有许多不同的集合式语法可以编译成某种东西.它们都是什么,它们是什么意思?

let s1 = [a, b, c, d]
let s2 = [a; b; c; d]
let s3 = (a, b, c, d)
let s4 = (a, b, c, d)
let s5 = [|a, b, c, d|]
let s6 = [|a; b; c; d|]
let s7 = a, b, c, d
let s8 = { aa = 3; bb = 4 }
Run Code Online (Sandbox Code Playgroud)

f#

3
推荐指数
1
解决办法
130
查看次数

Monitor.TryEnter(lockObject,timeout)是否过载不安全?(.净)

在代码审查期间我被建议做

bool acquiredLock = false;
try {
    Monitor.TryEnter(lockObject, 500, ref acquiredLock);
    if (acquiredLock) {
        // do something
    }
    else {
        // fallback strategy
   }
}
finally
{
    if (acquiredLock)
    {
        Monitor.Exit(lockObject);
    }
}
Run Code Online (Sandbox Code Playgroud)

而不是更简单

if (Monitor.TryEnter(lockObject, 500)) {
      try {
          // do something...
      } 
      finally {
          Monitor.Exit(lockObject);
      }
} else {
     // fallback strategy
}
Run Code Online (Sandbox Code Playgroud)

它有什么不同?第一个代码怎么能没有出现第二个代码会出现错误的错误?

c#

3
推荐指数
1
解决办法
424
查看次数

如何让 SQL Azure 与 TrustServerCertificate=false 配合使用?

副标题 - 如何在没有中间人攻击的情况下真正安全地连接到 SQL Azure?

我可以使用 TrustServerCertificate=true 的 ADO.net 连接字符串并成功连接到服务器。但是,如果这样做,我将失去对中间人攻击的保护,其中与服务器的通信被劫持,并且使用未知的证书来建立连接。所以我想使用TrustServerCertificate=false。

唯一的问题是,现在我收到连接失败信任验证的错误。我希望解决此问题的方法是我需要在我的证书存储之一中安装 SQL Azure 的服务器证书。问题是我不知道如何获取服务器证书。帮助?

security azure-sql-database

2
推荐指数
1
解决办法
7925
查看次数

标签 统计

azure-sql-database ×1

c ×1

c# ×1

critical-section ×1

f# ×1

locking ×1

security ×1