极速赛车APP下载

ccriticalsection使用_ccriticalsection使用_ccriticalsection 嵌套

电脑杂谈  发布时间:2019-08-05 05:01:25  来源:网络整理

ccriticalsection使用_ccriticalsection 嵌套_ccriticalsection使用

使用它的过程中,需要给各个线程提供一个共享的临界区对象,无论哪个线程占有临界区对象,都可以访问受到保护的数据,这时候其它的线程需要等待,直到该线程释放临界区对象为止,临界区被释放后,另外的线程可以强占这个临界区,以便访问共享的数据。在任意时刻只允许一个线程对共享资源进行访问ccriticalsection使用,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。当某个线程进入临界区内的时候,若其他的某个线程需要访问那段资源,那么就会被排斥,不允许进入,要等到那个已经进入的线程退出临界区后,它才能进入访问ccriticalsection使用,通常用作多线程中访问共享资源时的加锁,避免多线程冲突导致程序崩溃。

ccriticalsection使用_ccriticalsection使用_ccriticalsection 嵌套

CCriticalSection类的用法非常简单,步骤如下:

ccriticalsection使用_ccriticalsection使用_ccriticalsection 嵌套

定义CCriticalSection类的一个全局对象(以使各个线程均能访问),如CCriticalSection critical_section;

ccriticalsection使用_ccriticalsection 嵌套_ccriticalsection使用

在访问需要保护的资源或代码之前,调用CCriticalSection类的成员Lock()获得临界区对象: critical_section。Lock();

ccriticalsection 嵌套_ccriticalsection使用_ccriticalsection使用

程中调用该函数来使线程获得它所请求的临界区。如果此时没有其它线程占有临界区对象,则调用Lock()的线程获得临界区;否则,线程将被挂起,并放入到一个系统队列中等待,直到当前拥有临界区的线程释放了临界区时为止。

访问临界区完毕后,使用ccriticalsection的成员函数unlock()来释放临界区:critical_section.unlock()。当协议把数据接收完毕后,recv函数就吧sockfd的接收缓冲区中的数据copy到buff中(注意协议接收到的数据可能大于buff的长度,所以在这种情况下要调用几次recv函数才能把sockfd的接收完毕后,recv函数就把sockfd的函数的接收缓冲区中的数据copy完,recv函数仅仅是copy数据,真真的接受数据是协议来完成的)。原子操作:原子操作与普通的整数型操作的区别是 普通的整数型操作,多线程中多个线程同时访问或操作一个共享的整数型资源时,会有可能发生多个线程同时访问一个资源而造成冲突的状况,而原子操作不同,原子操作整数型资源时它会禁止别的线程访问这个资源,等待到操作完毕后则可以让别的线程访问,并且操作时不会被任何其他任务或事件所中断,也有人说这里为什么不使用临界区呢,使用临界区也是可以的,但相对来说,原子操作的速度是比临界区快一些的 等..... 。

//这个函数将确保线程块中的每个线程都执行完__syncthreads()前面的语句极速赛车APP下载后,才会执行下一条语句。假如,下载tickets=1,a线程刚执行完①语句,还没开始执行②语句时,cpu资源就被b线程抢夺去了,b线程执行“if(tickets>0)”,因为在此时num还是1,所以b线程将执行①语句,在“--tickets”之后,ticket的数量就变成0,而此时cpu资源就被a线程抢夺去了,接着还没有执行的②语句时,由于此时“ticket=0”,在执行完②语句后,ticket的数量就变成-1了。notify他只是选择一个wait状态线程进行通知,并使它获得该对象上的锁,但不惊动其他同样在等待被该对象notify的线程们,当第一个线程运行完毕以后释放对象上的锁,此时如果该对象没有再次使用notify语句,即便该对象已经空闲,其他wait状态等待的线程由于没有得到该对象的通知,继续处在wait状态,直到这个对象发出一个notify或notifyall,它们等待的是被notify或notifyall,而不是锁。


本文来自电脑杂谈,转载请注明本文网址:
http://www.0531mai.com/a/jisuanjixue/article-118106-1.html

    相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 师增辉
      师增辉

      而你塔魔的是挑战整个人类的秩序

    极速赛车APP 极速赛车双面盘 极速赛车APP 极速赛车APP下载 极速赛车手机官网 极速赛车手机版下载 极速赛车手机版下载 极速赛车手机版下载 极速赛车APP下载 极速赛车APP