用线程编程

时间:2019-05-20 20:54:26

标签: multithreading mutex

实现一个多线程程序,该程序的线程在一个循环中竞争一个互斥体。除了注册互斥量已成功分配(每个计数器)外,每个线程的关键区域均不发生任何事情。程序的唯一参数是程序应启动的线程数n。 找出这有多公平:将互斥量分配给每个线程的频率是多少?主线程应该首先启动所有线程,然后等待一秒钟以确保所有线程都在运行。然后,他重置所有计数器并进入睡眠状态3秒钟。然后,他输出仪表读数并结束程序。 a)运行1、2、5、10和100个线程的程序。总共获得了多少次互斥锁?这个数字大致等于所有线程吗? b)公平性还取决于竞争线程是在不同的CPU上运行还是在同一CPU的内核上运行。确保您的程序现在仅在一个内核上运行(例如pthread_seta nity_np()命令)。在Linux下,您也可以只通过tasket -c 3 ./myProgram 5运行程序。这将执行限制在索引为3的内核上。从a)重复测试。这种变化如何影响公平性?

0 个答案:

没有答案