jjzjj

deadlock

全部标签

windows - Win32 Event 对象是递归互斥体吗?

我在MSDN上查了下,Mutexcouldbelockedtwice,但是没有任何关于recursiveacquirethesameeventobjecttwiceinathread.我们可以在同一个线程中两次锁定win32事件吗?编辑:Lock事件是什么意思?这里我假设事件是自动重置的。锁定:线程从WaitForXXX中唤醒(例如,WaitForSingleObject)解锁:线程正在调用SetEvent或PluseEvent。 最佳答案 互斥体与事件有着根本的不同。互斥锁用于提供互斥,以便一次只有一个线程可以访问资源,而事件只是

c++ - DirectShow 的eof检测

有没有办法检测到DirectShow过滤器图已到达其文件末尾?在其文件末尾,我的意思是带有SampleGrabber过滤器的过滤器图将永远不会收到另一个SampleCB调用。以下是一些不起作用的东西:相信IMediaDet::get_StreamLength(人们常说视频中的帧数比实际存在的多)信任IMediaSeeking::GetDuration(它与IMediaDet一致,+/-一帧)使用IMediaControl::GetState(即使文件中的所有帧都已处理,过滤器图仍保持运行)背景:我正在做视频处理,我有一个用SampleGrabber创建滤镜图的类。每当调用SampleG

c# - 从工作线程调用 UI 线程时出现死锁

当我从工作线程调用UI线程时出现死锁。实际上,工作线程在调用行上被阻塞了:return(ucAvancementTrtFamille)mInterfaceTraitement.Invoke(d,newobject[]{psFamille});奇怪的是UI线程(如果我错了,请纠正我,是主线程)是空闲的。有什么办法可以:看看我实际尝试调用哪个线程?看看所说的线程真正在做什么?我们可以在下图中看到,工作线程(ID3732)阻塞在Invoke行上,MainThread在应用程序的主函数中处于空闲状态。编辑:这是主线程的堆栈:Edit2:实际上,我第二次暂停了程序,这里是堆栈的样子:Edit3:

c# - .NET 4.0 和可怕的 OnUserPreferenceChanged 挂起

我一直被可怕的OnUserPreferenceChangedHang所困扰,IvanKrivyakov在这里很好地提到了它:http://ikriv.com/en/prog/info/dotnet/MysteriousHang.html#BeginInvokeDance前阵子发帖提问,当初遇到问题的时候:YetanotherC#DeadlockDebuggingQuestion我以为我已经通过删除一个从UI线程构建的控件来解决它,但过了一会儿它又出现了(可能永远不会离开......)。我们一直在使用.NET3.5,据我所知,它使用CLR2.0。最近,应用程序已升级为使用.NET4.0C

C# Threading.Suspend 已过时,线程已被弃用?

在我的应用程序中,我正在通过另一个线程(GUI线程除外)执行文件读取。有两个按钮分别用于暂停和恢复线程。privatevoidBtnStopAutoUpd_Click(objectsender,EventArgse){autoReadThread.Suspend();}privatevoidBtnStartAutoUpd_Click(objectsender,EventArgse){autoReadThread.Resume();}但我正面临这个警告,Thread.Suspendhasbeendeprecated.PleaseuseotherclassesinSystem.Thread

c# - .net 中的死锁示例?

任何人都可以用c#给出一个简单的死锁示例代码吗?并请告诉您在C#代码示例中查找死锁的最简单方法。(可能是检测给定示例代码中死锁的工具。)注意:我有VS2008 最佳答案 一种常见的方法是,如果您有嵌套的锁,这些锁不是以相同的顺序获取的。线程1可以获得锁A,线程2可以获得锁B,它们会死锁。vara=newobject();varb=newobject();lock(a){lock(b){}}//otherthreadlock(b){lock(a){}}编辑:非锁定示例..使用等待句柄。假设苏格拉底和笛卡尔正在吃牛排,他们都是彬彬有礼的

c# - 异常 : Deadlock

当我尝试在C#中从SQL数据库中获取数据时,生成了这两个异常:System.Data.SqlClient.SqlException:Transaction(ProcessID97)wasdeadlockedonlockresourceswithanotherprocessandhasbeenchosenasthedeadlockvictim.或System.Data.SqlClient.SqlException:Transaction(ProcessID62)wasdeadlockedonlockresourceswithanotherprocessandhasbeenchosenas

c# - 即使在 Asp.Net 流程中使用 ConfigureAwait(false) 后也会出现死锁

即使在使用ConfigureAwait(false)之后我仍然遇到死锁,下面是示例代码。根据示例http://blog.stephencleary.com/2012/02/async-and-await.html(#AvodingContext),这不应该是死锁。这是我的课:publicclassProjectsRetriever{publicstringGetProjects(){...varprojects=this.GetProjects(uri).Result;......}privateasyncTask>GetProjects(Uriuri){returnawaitthis

c# - Lazy<T> ExecutionAndPublication - 可能导致死锁的示例

LazyThreadSafetyMode的文档声明如果初始化方法(或默认构造函数,如果没有初始化方法)在内部使用锁,则使用值ExecutionAndPublication可能会导致死锁。我试图更好地理解使用此值时可能导致死锁的示例。在我使用这个值时,我正在初始化一个ChannelFactory.我看不到ChannelFactory的构造函数使用任何内部锁(使用Reflector查看类),所以我相信这种情况不符合可能的死锁情况,但我很好奇什么情况会导致死锁以及是否可能死锁初始化ChannelFactory。总而言之,我的问题是:使用ExecutionAndPublication初始化Ch

c# - 结合应用程序域远程处理和任务时出现死锁

我的应用程序需要将插件加载到单独的应用程序域中,然后在其中异步执行一些代码。我已经编写了一些代码来将Task包装在可编码类型中:staticclassRemoteTask{publicstaticasyncTaskClientComplete(RemoteTaskremoteTask,CancellationTokencancellationToken){Tresult;using(cancellationToken.Register(remoteTask.Cancel)){RemoteTaskCompletionSourcetcs=newRemoteTaskCompletionSou