, alph
num
. pass
, .
MWE :
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int PassCheck(char *pass){
usleep(50);
return strncmp(pass, "qr34", 4)==0;
}
int main(){
const char alph[27] = "abcdefghijklmnopqrstuvwxyz";
const char num[11] = "0123456789";
char goodpass[5] = "----";
int i, j, m, n;
#pragma omp parallel for collapse(4)
for (i = 0; i < 26; i++)
for (j = 0; j < 26; j++)
for (m = 0; m < 10; m++)
for (n = 0; n < 10; n++){
char pass[4];
pass[0] = alph[i];
pass[1] = alph[j];
pass[2] = num[m];
pass[3] = num[n];
if(PassCheck(pass)){
#pragma omp critical
{
memcpy(goodpass, pass, 4);
goodpass[4] = '\0';
}
}
}
printf("Password was '%s'.\n",goodpass);
return 0;
}
dynamic
, , . , . . , .
, , . , , .
#pragma omp cancel for
OpenMP 4.0; , . , , , , .
, . pass[0]
, . , collapse(4)
. , , , . , , .
usleep
?
usleep
. ; parallelism, .
usleep
, 0.003s 0.004s 4 . , parallelism . usleep
8.950s 2.257s 4 , parallelism.
, , , parallelism .
, , , - PassCheck
. usleep()
.