草庐IT

Thread_safety

全部标签

c# - 什么时候用Task.Delay,什么时候用Thread.Sleep?

关于何时使用Task.Delay是否有好的规则?与Thread.Sleep?具体来说,是否有最低值(value)可以让一个比另一个有效/高效?最后,由于Task.Delay会导致异步/等待状态机上的上下文切换,使用它是否会产生开销? 最佳答案 使用Thread.Sleep当你想阻塞当前线程时。使用awaitTask.Delay当您想要逻辑延迟而不阻塞当前线程时。效率不应该是这些方法的首要问题。它们在现实世界中的主要用途是作为I/O操作的重试计时器,以秒而不是毫秒为单位。 关于c#-什么时

javascript - 一页上有几个 disqus-thread

我们有一个网站,其中列出了很多事件,并希望为每个事件添加讨论。所以我们想用disqus,查了一下。原来他们使用全局变量来配置实例。喜欢;vardisqus_shortname='';vardisqus_identifier='';vardisqus_url='';这给我们带来了一个问题,因为我们不想使用相同的标识符,而是希望每个disqus实例使用唯一的标识符。尝试将每个实例化+配置放在iframe中,但这确实搞砸了ie8。有更好的方法吗?所以,总结一下;一页上有几个disqus实例。如何?有人做过吗?谢谢 最佳答案 我们遇到了类似

WPF入门9:线程(Thread)

WPF入门9:线程(Thread)什么是线程(Thread)?1.线程是一个可执行的路径,它可以独立于其他线程执行。2.每个线程都在操作系统的进程内执行,而操作系统进程提供了程序运行的独立环境。3.单线程应用,在进程的独立环境里只跑一个线程,所以该线程拥有独占权。4.多线程应用,单个进程中会跑多个线程,他们会共享当前的执行环境(内存)等。5.进程和线程的对应关系,一个进程可以拥有多个线程,多个线程只能属于一个进程。例如:一个非常耗时的操作(读数据库、复杂耗时的计算),如果只用主线程执行UI线程会“假死”专业术语叫线程阻塞。这时候的解决办法就是单独开一个线程去执行这个耗时操作。这个时候处理的数据

multithreading - goroutine和thread的区别

这个问题在这里已经有了答案:Whatisrelationshipbetweengoroutineandthreadinkernelanduserstate(1个回答)关闭2年前。我是Golang的新手,我刚刚通过以下示例了解了Goroutine的概念:packagemainimport"fmt"funcf(fromstring){fori:=0;i这是一个执行结果:direct:0direct:1direct:2goroutine:0goroutine2:0goroutine2:1goroutine2:2goroutine:1goroutine:2goingdone我可以看到gorou

google-app-engine - 访问数据存储时如何避免 "safety"over quota panic? (已启用计费)

我将我的网站部署到GoogleAppEngine(使用Golang和具有1000条记录的数据存储)。启用计费并建立每日预算。配额详细信息页面指示一切都在配额之下。我正在执行Urlfetch以获取用于在数据存储区中构建数据实体的tsv文件。两个问题:仅创建了778个实体-日志表明这是一个长时间运行的进程,但它似乎在没有错误消息的情况下提前终止。文档说这是正常的第二步涉及从数据存储区中的实体创建一个json文件。这个过程会导致“panic:超配额”,因为我想这个过程花费的时间太长了。我该如何进行?我应该将tsv数据文件分成几个较小的文件吗?我可以请求“更多时间”以免超过安全配额吗?需要注意

thread-safety - Go 的缓冲 channel 是无锁的吗?

Go的缓冲channel本质上是一个线程安全的FIFO队列。(参见IsitpossibletouseGo'sbufferedchannelasathread-safequeue?)我想知道它是如何实现的。它是否像Istheresuchathingasalocklessqueueformultiplereadorwritethreads?中描述的那样是无锁的??在Go的src目录中进行greping(grep-rLock.|grepchan)给出以下输出:./pkg/runtime/chan.c:Lock;./pkg/runtime/chan_test.go:m.Lock()./pkg/

git push 致命的 : unable to create thread: Resource temporarily unavailable

我是git的新手。我想将大量提交推送到远程服务器,但问题是当我使用gitpushoriginmaster返回错误Countingobjects:5009,done.Deltacompressionusingupto16threads.fatal:unabletocreatethread:Resourcetemporarilyunavailableerror:pack-objectsdiedwithstrangeerror那么我是否可以设置Delta压缩的最大线程使用量。谢谢你的帮助,陈元 最佳答案 错误:“fatal:unablet

c - C 中的 "thread fork"(理想情况下是 POSIX,但仅适用于 Linux)

是否有任何库/pthread包装器/clone允许我拥有tfork的参数--类似fork()的东西,允许您在上下文中继续执行代码,而不是指向在新线程下执行的新函数。如果没有,有什么简单的方法自己写吗?理想情况下,用法就像fork一样,但含义类似于threadlike,举个人为的例子:intmain(){intival=0;if(tfork()==0){sleep(10);ival=5;_exit();//orexitorreturnorwhatever}else{while(1){printf("ival=%d\n",ival);if(ival!=0){printf("ivalchan

linux - Linux 中的 getrusage(RUSAGE_THREAD, ...) 和 clock_gettime(CLOCK_THREAD_CPUTIME_ID, ...) 有什么区别?

这个问题几乎说明了一切。根据getrusage()的手册页,它返回:structtimevalru_utime;/*userCPUtimeused*/structtimevalru_stime;/*systemCPUtimeused*/根据clock_gettime()的手册页,它返回:CLOCK_THREAD_CPUTIME_ID(sinceLinux2.6.12)Thread-specificCPU-timeclock.那么,(线程特定的)“用户/系统使用的CPU时间”与线程特定的CPU时间时钟有何不同?显然,我问这个问题是因为我在移植到Linux(来自自定义RTOS)的应用程序中

linux - struct task_struct中的字段 'on_cpu'和struct thread_info中的字段 'cpu'是什么意思?

我想知道Linux系统中当前进程运行在哪个cpu上,我有两个选择—获取structtask_struct或中的字段on_cpu获取结构thread_info中的字段cpu。我写了一个内核模块程序来探测这两个字段,并得到结果如下:[3991.419185]thefield'on_cpu'intask_structis:1[3991.419187]thefield'cpu'inthread_infois:0[3991.419199]thefield'on_cpu'intask_structis:1[3991.419200]thefield'cpu'inthread_infois:0[399