资源简介
简单的多线程编程,为了判断数独结果是否有效,把整个任务分解成几个可并行执行的子任务,然后把这些任务分配给多个线程。在这里,我们创建了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;
}
}
}
相关资源
- 消消乐自动求解
- Debian Linux服务器资料
- Linux常用命令.xmind
- Xilinx Zynq SoC与嵌入式Linux设计实战指南
- openkeeper
- apt安装包linux
- linux 添加字符设备驱动程序及测试程
- weblogic集群部署步骤详细相关文档资料
- LINUX下的MODBUS-RTU驱动程序
- libevent多线程
- jdk-8u261-x64(含linuxwindowsmacos)
- linux下基于QT和v4l2驱动的USB摄像头视频
- Zedboard ov7725板端Linux下tcp视频发送
- Linux上实现基于Socket_的多进程实时通
- xgcom-0.04.2源码
- linux下的一个异步通信的串口类
- Linux设备驱动
- Linux内存分配与回收
- linux gsm0710 CMUX串口多路复用源码
- Linux Socket 基于GTK+聊天软件
- v4l2采集视频并保存和lcd显示
- Linux基于Live555从共享内存 获取rstp实时
- linux下二进制拆弹
- 《Linux环境编程》编程题答案及实验报
- linux平台基于socket图形化网络聊天
- 用链表实现的一个电话本小程序
- linux系统iftop命令所有安装包依赖包
- Linux系统操作实习报告
- 多线程字符串代码文件搜索器
- 基于嵌入式Linux的车载定位系统设计
评论
共有 条评论