#include #define N 1024 int A[N]; int B[N]; void loop_with_condition() { int i; __sync_synchronize(); for (i = 0; i < N; i++) { if (i <= N / 2) { if (i > 20) A[i] = 1; else A[i] = 2; } B[i] = 3; } __sync_synchronize(); } int main () { int i; memset(A, 0, sizeof(int) * N); memset(B, 0, sizeof(int) * N); loop_with_condition(); for (i = 0; i < N; i++) if (B[i] != 3) return 1; for (i = 0; i < N; i++) if (i <= N / 2 && i > 20 && A[i] != 1) return 1; else if (i > N / 2) { if (i <= 20 && A[i] != 2) return 1; if (i > 20 && A[i] != 0) return 1; } return 0; }