临界区是做什么用的?

sinlo 2005-03-07 09:45:21
它是在什么时候或什么地方能用到?它是做什么用的?能解释一下吗?最好能给个对应的例子,谢谢各位了!奖励20分。
...全文
366 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengwujun 2005-03-10
  • 打赏
  • 举报
回复
CRITICAL_SECTION m_CriticalSection;

InitializeCriticalSection(&m_CriticalSection);

EnterCriticalSection(&m_CriticalSection);
//你的代码
LeaveCriticalSection(&m_CriticalSection);

DeleteCriticalSection(&m_CriticalSection);
zengwujun 2005-03-10
  • 打赏
  • 举报
回复
CRITICAL_SECTION Mm_
InitializeCriticalSection();

EnterCriticalSection();
//你的代码
LeaveCriticalSection();

DeleteCriticalSection();
wangwei8117 2005-03-08
  • 打赏
  • 举报
回复
不是做什么用的,这是操作系统中的一个概念,是为了合理分配资源,避免产生死锁而设置的。
梦想家大魔王 2005-03-08
  • 打赏
  • 举报
回复
用来在多线程程序中保持同步。
假设一个程序中有两个线程A、B需要访问共享资源X,A负责根据一定的条件改写X的值,而B需要读取X的值并根据这个值作出相应的动作。
为了保证访问的正确性和有效性,就可以为X设置一个临界区对象LockX,在A、B中访问X的具体代码之前先申请进入LockX,访问之后则要立即退出LockX。这样就可以保证在某一时刻,A、B两个线程中最多有一个可以访问X。当一个线程在临界区中的时候,另一个申请进入临界区的线程必须等待里面的线程退出临界区以后才能进入临界区访问共享资源。
ThinkX 2005-03-08
  • 打赏
  • 举报
回复
举个例子,就象列车上的单人厕所,如果每个人都要去厕所,那么临界区就是厕所门上的那个锁,保证你进去后,锁上锁,其他人都进不来。
我不懂电脑 2005-03-07
  • 打赏
  • 举报
回复
保护共享资源,在多线程间同步访问

If objects do not provide built-in locking, you can use a critical section. Critical sections work like gates that allow only a single thread to enter at a time. To use a critical section, create a global instance of TCriticalSection. TCriticalSection has two methods, Acquire (which blocks other threads from executing the section) and Release (which removes the block).

Each critical section is associated with the global memory you want to protect. Every thread that accesses that global memory should first use the Acquire method to ensure that no other thread is using it. When finished, threads call the Release method so that other threads can access the global memory by calling Acquire.

Warning: Critical sections only work if every thread uses them to access the associated global memory. Threads that ignore the critical section and access the global memory without calling Acquire can introduce problems of simultaneous access.

For example, consider an application that has a global critical section variable, pLockXY, that blocks access to global variables X and Y. Any thread that uses X or Y must surround that use with calls to the critical section such as the following:

pLockXY->Acquire(); // lock out other threads

try
{
Y = sin(X);
}
__finally
{
pLockXY->Release();
}
onemonth 2005-03-07
  • 打赏
  • 举报
回复
临时分界的区域。
fyhui 2005-03-07
  • 打赏
  • 举报
回复
我们一般用来做多线程同步用。创建一个临界区后, 每次只能有一个程序进入,其他的要等待
lurker123 2005-03-07
  • 打赏
  • 举报
回复
临界区是在单个进程中对保护资源进行串行化使用的高效机制,就是在一个时刻只能有一个线程对临界区中的资源进行使用,作用和互斥对象一样,不过临界区不是内核对象,不能在多个进程间使用,但它比互斥对象要高效。
代码可以参照MSDN中InitializeCriticalSection()的函数说明。
内容概要:本文研究了基于DPWMA调制与正负序分离的ANPC三电平并网逆变器前馈控制策略,旨在解决传统三电平逆变器存在的谐波含量高、电网不平衡工况适应性差及动态响应速度不足等问题。通过采用有源中点箝位(ANPC)三电平逆变器拓扑,结合双极性倍频脉宽调制(DPWMA)、正负序分离锁相技术和电网电压前馈控制,构建了一套一体化的高性能并网控制体系。该体系不仅优化了逆变器的开关动作机制,改善了输出电压电流的谐波特性,而且通过精确的相位同步和扰动补偿,显著提高了系统的动态响应能力和抗扰性能。仿真结果显示,所提出的控制策略能有效降低并网谐波含量,提升锁相精度与系统动态稳定性,确保在复杂电网工况下的高质量稳定并网。 适合人群:具备一定电力电子基础知识和仿真技能的研发人员,尤其是从事新能源发电、储能系统、柔性输电等领域研究的专业人士。 使用场景及目标:①研究和开发高性能并网逆变器,特别是针对大功率、高电能质量要求的应用场景;②探索如何通过先进的调制和控制策略来提高并网逆变器对电网扰动的适应性和响应速度;③为相关领域的学术研究和技术开发提供理论依据和实践指导。 阅读建议:建议读者结合实际的仿真软件(如MATLAB/Simulink)进行实践操作,以便更好地理解和掌握文中提到的各种控制策略的具体实现方法。同时,鼓励读者关注最新的研究成果和发展趋势,不断深化对该领域的认识。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧