.


:




:

































 

 

 

 


! 4




− k;

− work;

− SumElement;

− stdout .

− () work;

− - SumElement ( , k ).

work ( main - . main, , !):

− , ;

− c . - ;

− main ;

− .

SumElement ( main, !):

− main ;

− k;

− .

4. main :

− , ;

− ;

− k;

− work;

− MultElement;

− stdout ;

− () work.

work ( main . main, , !):

− , ;

− [A,B] ( , - ). - . A,B main.

− main ;

− ;

− MultElement ( , ( [A, B]).

MultElement ( work, !):

− work ;

− ( [A, B]);

− .

5. main :

− , ;

− ;

− k;

− work;

− SumElement;

− stdout ;

− () work;

− SumElement ( , k ).

work ( main - . main, , !)'.

− , ;

− . - ;

− main ;

− .

SumElement ( main, !)'

− main ;

− ( ) k;

− .

6. main :

− , ;

− ;

− k;

− work;

− SumElement;

− stdout ;

− ;

− () work.

work ( main - . main, , !):

− , ;

− > ( , - ). - . main;

− main ;

− ;

− SumElement ( , .

SumElement ( work, !):

− work ;

− ;

− .

7. main :

− , ;

− ;

− k;

− work;

− SumElement;

− stdout ;

− () work;

− SumElement ( , k - ).

work main . main, , !.

− , ;

− ( , - ). - .

− main , ;

− SumElement main, !

− main ;

− k, .

8. main :

− , ;

− ;

− work;

− CountElement;

− stdout ;

− X;

− () work;

− work ( main - . main, , !)

− , ;

− = ( , -). - . X main;

main ;

− ;

− CountElement ( , .

CountElement ( work, !)

− work ;

− X;

− .

9. main :

− , ;

− ;

− k;

− work;

− MultElement;

− stdout ;

− () work;

− MultElement ( , k ).

− work ( main - . main, , !)

− , ;

− < ( , - ). - . main;

− main ;

− ;

− MultElement ( main, !)

− main ;

− k;

− .

10. main :

− , ;

− ;

− work;

− SumElement;

− stdout .

− () work;

− work ( main - . main, , !)

− , ;

− , ( - ). , - , - 0. - ;

− main ;

− ;

− SumElement ( , ;

− SumElement ( work, !)

− work ;

− () ;

− .

11. main :

− , ;

− ;

− k;

− work;

− SumElement;

− stdout ;

− () work;

− SumElement ( , k );

− work ( main - . main, , !):

− , ;

− ( , - ) main ;

− ;

SumElement ( main, !):

− main ;

− () k;

− .

12. main :

− , ;

− ;

− work;

− MultElement;

− stdout ;

− () work;

work ( main - . main, , !):

− , ; . - , main ;

− ;

− MultElement ( , .

MultElement ( work, !):

− work ;

− ;

− .

13. main :

− , ;

− ;

− k;

− work;

− SumElement;

− stdout ;

− () work;

SumElement ( , k ).

work ( main - . main, , !):

− , ;

− , ( , - ). - .

− main ;

− ;

SumElement ( main, !):

− main ;

− () k;

− .

14. main :

− , ;

− ;

− work;

− SumElement;

stdout ;

− () work;

work ( main . main, , !):

− , ;

− , ( - ). , : _). ;

− main ;

− ;

− SumElement ( , .

SumElement ( work, !):

− work ;

− () ;

− .

15. main :

− , ;

− ;

− work;

− Sum/CountElement;

− stdout ;

− () work;

work ( main - . main, , !):

− , ;

− , ( ).

− , : _). ;

− main ;

− ;

− Sum/CountElement ( , ;

− Sum/CountElement ( work, !):

− work ;

− ( : _) ;

− .

 

 

5

:

 

:

1. .

2. , .

3. ,

 

1. Windows

Windows , : (signaled) (nonsignaled). . , . Windows :

− (mutex);

− (event);

− (semaphore).

(waitable timer). , . . , . , .

. Windows , . , . , , , , . WaitForSingleObject WaitForMultipleObject.

WaitForSingleObject, :

DWORD WaitForSingleObject(

HANDLE hHandle, //

DWORD dwMilliseconds //

);

WaitForSingleObject , dwMilliseconds, hHandle . dwMilliseconds , . dwMilliseconds INFINITE, .

WaitForSingleObject :

WAIT_OBJECT_0

WAIT_ABANDONED

WAIT_TIMEOUT

WAIT_OBJECT_0 , . WAIT_ABANDONED , , , . . (abandoned mutex). WAIT_TIMEOUT , , . WaitForSingleObject WAIT_FAILED.

, WaitForSingleObject . , 2.1 Add.

 

1. WaitForSingleObject

#include <windows.h>

#include <iostream>

using namespace std;

void thread()

{

int i;

for (i = 0; i < 10; i++)

{

cout << i << ' '; cout << flush << '\a';

Sleep(500);

}

cout << endl;

}

int main()

{

HANDLE hThread;

DWORD dwThread;

hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread, NULL, 0, &dwThread); if (hThread == NULL)

return GetLastError();

// thread

if(WaitForSingleObject(hThread, INFINITE)!= WAIT_OBJECT_0)

{

cout << "Wait for single object failed." << endl; cout << "Press any key to exit." << endl;

}

// thread CloseHandle(hThread);

return 0;

}

WaitForMultipleObject, :

DWORD WaitForMultipleObjects(

DWORD nCount, //

CONST HANDLE *lpHandles, //

BOOL bWaitAll, //

DWORD dwMilliseconds //

);

WaitForMultipleObjects . bWaitAll TRUE, , dwMilliseconds, , lpHandles, . bWaitAll FALSE, . dwMilliseconds , . dwMilliseconds INFINITE, . , WaitForMultipleObjects, MAXIMUM_WAIT_OBJECTS. , .

WaitForMultipleObjects :

WAIT_OBJECT_0 (WAIT_OBJECT_0 + nCount - 1); WAIT_ABANDONED_0 (WAIT_ABANDONED_0 + nCount - 1);

WAIT_TIMEOUT.

, WaitForMultipleObjects, bWaitAll. , TRUE. :

- , WAIT_OBJECT_0 (WAIT_OBJECT_0 + nCount - 1), , ;

- , WAIT_ABANDONED_0 (WAIT_ABANDONED_0 + nCount - 1) , , , ;





:


: 2016-11-24; !; : 516 |


:

:

: , .
==> ...

1982 - | 1616 -


© 2015-2024 lektsii.org - -

: 0.108 .