
并发编程
文章平均质量分 62
wjfdsklfdkfksd
这个作者很懒,什么都没留下…
展开
-
关于计算机中的“race condition“的解释
竞争条件(race condition)是指当多个线程或进程同时访问或修改共享资源时,最终的执行结果受到每个线程执行的顺序或时间差异的影响,从而导致程序出现不正确的行为或结果。这种情况下,各个线程之间的执行顺序是不确定的,无法可靠地预测各个操作的完成顺序。因此,出现竞争条件时,程序的行为可能与单线程下的预期结果不一致。"竞争条件"这个词可以被翻译为"race condition",但为了更好理解,可以使用 "并发冲突" 这个词组。原创 2023-07-18 19:15:05 · 257 阅读 · 0 评论 -
线程独占数据和共享的数据有哪些?
需要注意的是,线程间共享的数据需要进行同步操作,以保证数据的一致性和正确性,否则可能会发生竞争条件导致数据错误或者不可预料的结果。同时,在设计和开发多线程应用时,需要谨慎处理共享数据和私有数据的访问和修改,以避免引发线程安全问题。4. 栈帧:每个线程的函数调用时会生成一个栈帧,用于存储函数的参数、返回地址等信息。2. 栈空间:每个线程都有自己独立的栈空间,存储函数调用时的参数、局部变量等信息。3. 寄存器:每个线程都有自己独立的寄存器,用于存储临时变量和计算结果等。原创 2023-07-18 19:06:33 · 2029 阅读 · 0 评论 -
C++并发编程之共享数据(二)
恶性条件竞争通常发生于完成对多于一个的数据块的修改。例如对一个双向链表的结点的修改。该节点有两个指针。避免条件竞争的两种方式:方式一:确保只有进行修改的线程才能看到不变量被破坏时的中间状态。从其他访问线程的角度来看,修改不是已经完成了,就是还没开始。方式二:对数据结构和不变量的设计进行修改,修改完的结构必须能完成一系列不可分割的变化,也就是保证每个不变量保持稳定的状态,这就是所谓的无锁编程。原创 2023-07-15 17:32:48 · 593 阅读 · 0 评论 -
C++并发编程之线程启动(一)
不过,t1已经有了一个关联 的线程(执行some_other_function的线程),所以这里系统直接调用 std::terminate() 终止程 序继续运行。调用join的行为还清理了线程相关的存储部分,std::thread 对象将不再与已经完成的线程有任何关联,join只能调用一次。解释一下位置9的代码:计算剩下的最后一个块的结果,由于数据大小可能不是最小任务数的整数倍,所以最后一个块的元素个数不一定是多少,但是不影响该算法的执行。,那么转移的时候就需要使用 std::move() 进行。原创 2023-07-15 11:50:33 · 486 阅读 · 0 评论 -
条件变量C++11
条件变量的虚假唤醒是指在多线程编程中,等待某个条件的线程在未收到条件满足信号的情况下被唤醒。这种情况可能会导致程序出现错误,因为等待线程在未满足条件的情况下被唤醒,可能会导致程序继续执行而不是等待条件满足。舍弃std::lock_guard而采用std::unique_lock,原因就在这里:线程甲在等待期间,必须解锁互斥,而结束等待之后,必须重新加锁,但std::lock_guard无法提供这种灵活性。在使用条件变量时,为了避免虚假唤醒,可以在等待条件时使用循环来检查条件是否满足。原创 2023-05-22 10:21:15 · 85 阅读 · 0 评论 -
linux之线程同步
首先,如果锁的占用时间很长,自旋锁会导致线程一直循环等待,浪费 CPU 资源。其次,自旋锁只适用于单核 CPU 或者多核 CPU 上锁的线程数比较少的情况,因为在多核 CPU 上,如果一个线程一直占用锁,其他线程就会一直循环等待,导致 CPU 资源的浪费和性能下降。pshared控制信号量的类型,如果值为0,就表示这个信号量是当前进程的局部信号量,在当前进程的多个线程之间共享,否则信号量就可以在多个进程之间共享;自旋锁的优点是等待锁的线程不会被阻塞,因此在锁的占用时间很短的情况下,自旋锁的性能比较高。原创 2023-05-17 12:12:37 · 251 阅读 · 0 评论 -
linux之多线程
线程清理函数(thread cleanup function)是在线程退出时自动调用的函数。它可以用来清理线程中使用的资源,例如释放动态分配的内存、关闭文件句柄等。线程清理函数通过pthread_cleanup_push()和pthread_cleanup_pop()函数来注册。pthread_cleanup_push()函数用于注册一个线程清理函数,它将该函数压入线程的清理函数栈中。pthread_cleanup_pop()函数则用于弹出该函数,从而使得该函数不再被调用。原创 2023-05-16 17:49:41 · 239 阅读 · 0 评论