Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdio.h>
- typedef int (*fun)(char*,int* p);
- int g(char* str, int* p){
- *p=0;
- printf("%s\n",str);
- return 0;
- }
- int q=1;
- int q2 = 1;
- int number = 1;
- DWORD WINAPI Thread( void* pg ) {
- int counter = 0;
- while ( q ){
- printf("thread #1 -- %d\n", number);
- number += 1;
- printf("child\n");
- //Sleep(1);
- if(counter++ > 1) // три раза проходит цикл number+3
- break;
- }
- ((fun)pg)("thread_is_over!",&q);
- return 0;
- }
- DWORD WINAPI Thread2( void* pg ) {
- int counter = 0;
- while ( q2 ){
- printf("thread #2 -- %d\n", number);
- number += 1;
- printf("child\n");
- //Sleep(1);
- if(counter++ > 1) //number+3
- break;
- }
- ((fun)pg)("thread_is_over!",&q2);
- return 0;
- }
- int main( void ){
- DWORD dwThreadId;
- CreateThread(
- NULL, // аттрибуты безопасности по умолчанию
- 0, // размер стека потока по умолчанию
- Thread, // функция потока
- g, // аргумент функции потока
- 0, // флаги создания потока по умолчанию
- &dwThreadId); // возврат идентификатора потока
- //printf("parent\n", q);
- //Sleep(10);
- CreateThread(
- NULL, // аттрибуты безопасности по умолчанию
- 0, // размер стека потока по умолчанию
- Thread2, // функция потока
- g, // аргумент функции потока
- 0, // флаги создания потока по умолчанию
- &dwThreadId);
- while(q){
- printf("parent\n", q);
- Sleep(10);
- }
- printf("Final number == %d", number); //1 + 3 + 3 = 7
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement