TCriticalSection的奇怪问题 ( 积分: 100 )

  • 主题发起人 主题发起人 suewases
  • 开始时间 开始时间
S

suewases

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个线程TRcvPaperThread中使用了临界区CsNewPaper,在其他的一些单元中也使用了
这个线程,但是程序运行时,发现线程TRcvPaperThread中的CsNewPaper还没有release,
其他单元中就可以进入CsNewPaper临界区,我在每个CsNewPaper.Acquire和CsNewPaper.r
elease之后都向文件中添加信息,结果发现文件中会出现以下信息:
TRcvPaperThread.Execute enter CriticalSection
TfrmImage.ShowImage enter CriticalSection
TfrmImage.ShowImage leave CriticalSection
TRcvPaperThread.Execute leave CriticalSection
等等
请问为什么会出现这种情况,为什么TRcvPaperThread线程中的CsNewPaper还没有Release
,TfrmImage的ShowImage函数中可以进入CsNewPaper临界区。是不是只有自己定义的线程
之间才能用临界区同步?如有哪位大侠能帮我分析该问题,实在是不甚感激。
 
我在一个线程TRcvPaperThread中使用了临界区CsNewPaper,在其他的一些单元中也使用了
这个线程,但是程序运行时,发现线程TRcvPaperThread中的CsNewPaper还没有release,
其他单元中就可以进入CsNewPaper临界区,我在每个CsNewPaper.Acquire和CsNewPaper.r
elease之后都向文件中添加信息,结果发现文件中会出现以下信息:
TRcvPaperThread.Execute enter CriticalSection
TfrmImage.ShowImage enter CriticalSection
TfrmImage.ShowImage leave CriticalSection
TRcvPaperThread.Execute leave CriticalSection
等等
请问为什么会出现这种情况,为什么TRcvPaperThread线程中的CsNewPaper还没有Release
,TfrmImage的ShowImage函数中可以进入CsNewPaper临界区。是不是只有自己定义的线程
之间才能用临界区同步?如有哪位大侠能帮我分析该问题,实在是不甚感激。
 
后退
顶部