Sudoku拼图使用9×9网格,其中每列和行以及9个3×3子网格中的每一个都必须包含所有数字1···9。
该项目包括设计一个多线程应用程序,该应用程序确定了Sudoku拼图的解决方案是否有效。
线程是CPU利用率的基本单元。它包括线程ID,程序计数器,寄存器集和堆栈。它与属于同一过程的其他线程共享其代码部分,数据部分和其他操作系统资源,例如打开文件和信号。
sudoku_validator_naive.c
是Sudoku验证器的幼稚实现。在这里,我们检查所有3个条件是否有效串行。
sudoku_validator.c
创建了3个线程,用于检查每个条件。它利用了Pthreads库,该库是一个POSIX标准,该标准定义了UNIX和其他几个操作系统支持的线程创建和同步的API。
为了明显地查看结果,我们使用unistd.h
中定义的sleep()
函数。检查每个条件后,我们暂停程序的执行5秒钟。
由于程序串行运行,并且每个功能都睡5秒钟,因此执行时间约为15秒。
由于条件彼此平行,并且每个功能都睡5秒钟,因此执行时间仅为5秒。