Microsoft给出了这个在. NET 4中使用CinstationToken
的示例。
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
var tokenSource2 = new CancellationTokenSource();
CancellationToken ct = tokenSource2.Token;
var task = Task.Factory.StartNew(() =>
{
// Were we already canceled?
ct.ThrowIfCancellationRequested();
bool moreToDo = true;
while (moreToDo)
{
// Poll on this property if you have to do
// other cleanup before throwing.
if (ct.IsCancellationRequested)
{
// Clean up here, then...
ct.ThrowIfCancellationRequested();
}
}
}, tokenSource2.Token); // Pass same token to StartNew.
tokenSource2.Cancel();
// Just continue on this thread, or Wait/WaitAll with try-catch:
try
{
task.Wait();
}
catch (AggregateException e)
{
foreach (var v in e.InnerExceptions)
Console.WriteLine(e.Message + " " + v.Message);
}
Console.ReadKey();
}
}
但是,我的理解是,如果在一个线程上修改了一个变量,由于缓存,另一个线程可能无法获得修改后的值。并且由于CensationToken
在主线程上被取消,任务
线程如何确保它正在检查的CensationToken
实际上是最新的?
为什么任务
不可能读取令牌的缓存值?
注意:我问这个问题的动机是想知道我是否需要将实例变量设置为volatile。
这在内部由CancellationTokenSource处理。用于跟踪CTS状态的私有变量标记为volatile,这可以防止内部状态检查过时。
我问这个问题的动机是想知道我是否需要我的CancellationToken实例变量是可变的。
您不需要这样做,因为检查是在内部处理的,并且已经为您正确处理了。
基本上,当您从C撤消TokenSource
创建C撤消Token
时,该令牌包含对原始源的引用。此引用永远不会更改,因此调用ThrowIfCannah ationRequest
在内部检查源的状态。由于源状态本身是易失性
,因此它永远不会是“陈旧”数据。
问题内容: CSS教程中通常解释的方法是: 添加边框 添加填充 当您处理带有背景图像和固定填充的像素完美布局时,所有这些副作用都会变得很明显。 有什么方法可以简单地禁用折叠而不用将多余的像素推入布局中吗?对于我来说,必须以视觉方式影响文档以更改这种行为对我来说没有任何意义。 问题答案: 好吧,您需要在两者之间有一些东西来“破坏”崩溃。 我的第一个想法是使用div并在两者之间进行设置,但这似乎不起作
面试题 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 面试官心理分析 其实这是很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是 MQ 领域的基本问题,其实本质上还是问你使用消息队列如何保证幂等性,这个是你架构里要考虑的一个问题。 面试题剖析 回答这个问题,首先你别听到重复消息这个
每次在特定通道中发送消息时,我都想将其打印到控制台(console.log)。我还打算用给它上色。我到处去,甚至在堆栈溢出,但我似乎找不到任何信息。我正在编写一个学术保龄球帮助机器人。下面是我尝试过的代码(我在Stack Overflow上找到了这个。) (请注意,当我说时,我指的是频道的实际id。) 我得到的错误是不是一个东西。 如何修复此错误,以及如何在discord.js?中获取最新消息 编
问题内容: 中国货币的ISO 4217代码为CNY。由于限制了使用该货币进行的全球自由交易,因此存在第二种“离岸”等价货币,称为CNH。维基百科对此有一些总结。 CNH不在ISO 4217中,但我希望能够在我的应用程序中使用它,而不必编写自己的Currency类。大概在JVM安装目录中有某种列表。如何添加其他货币代码? 问题答案: 似乎Java 7已添加对此功能的支持。 对于较早的版本,您可以使用
面试题 如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。 面试题剖析 我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -
本文向大家介绍kafka如何保证不丢失消息?相关面试题,主要包含被问及kafka如何保证不丢失消息?时的应答技巧和注意事项,需要的朋友参考一下 复制因子:创建topic的时候指定复制因子大于1时,一个分区被分配到一个broker上,同时会在其他broker上维护一个分区副本; isr列表:分区及其副本分别为leader和follower,leader对外提供读写服务,follower会向leade