资源简介
简单的多线程编程,为了判断数独结果是否有效,把整个任务分解成几个可并行执行的子任务,然后把这些任务分配给多个线程。在这里,我们创建了11个线程,1~9个线程分别判断九个宫内的数字是否不重复,第10个线程判断每一行的数字是否不重复,第11个线程判断每一列的数字是否不重复。
代码片段和文件信息
#include
#include
#include
#include
struct parameters
{
int row; //行号
int column; //列号
};
int flags[12]={111111111111};
int num[10][10]={{0000000000}{0624539187}{0519728634}
{0837614295}{0143865729}{0958247361}
{0762391458}{0371956842}{0496182573}
{0285473916}};
void *function(void *param)
{
int ijmntemp;
int t[10];
struct parameters *data = (struct parameters*)param;
i=data->row;
j=data->column;
if(i!=0&&j!=0){
for(m=0;m<3;m++){
for(n=0;n<3;n++){
t[num[i+m][j+n]]=1;
}
}
for(m=1;m<10;m++){
if(t[m]==0){
flags[i+j/3]=0;
}
}
}else{
if(j==0){
for(m=1;m<=9;m++){
memset(t0sizeof(int)*10);
for(n=1;n<=9;n++){
t[num[m][n]]=1;
}
for(temp=1;temp<=9;temp++){
if(t[temp]==0){
flags[10]=0;
break;
}
}
}
}else{
for(m=1;m<=9;m++){
memset(t0sizeof(int)*10);
for(n=1;n<=9;n++){
t[num[n][m]]=1;
}
for(temp=1;temp<=9;temp++){
if(t[temp]==0){
flags[11]=0;
break;
}
}
}
相关资源
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- 编写简单的RMI程序 多线程web 服务器
- ubuntu9.10 可加载内核模块和字符设备驱
- MP3文件ID3v2ID3v2APEv2标签读取
- 操作系统实验——虚存管理实验
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- linux下用多进程同步方法解决生产者
- 多线程生产者消费者模式
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- linux 网络实验 ftp程序
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
- dos 下运行Linux 命令--gnu_utils
- linux 0.12内核源代码
- linux简易shell C实现
- linux实验报告及心得体会
- 基于GTK的Linux环境下的简易任务管理器
- linux扫雷游戏代码
- CAN Linux驱动代码
- 多线程实例:桌面智能弹球小游戏
- Linux系统教材
- WPF多线程演示
评论
共有 条评论