Command.append("/tmp/");
Command.append(X);
char *const argv[] = {const_cast<char*>(Command.data()),NULL};
posix_spawn(&Pid,Command.data(),&N,&M,argv,NULL);
Command.erase(Command.begin(), Command.end()); //.. .
}
ΠΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΠ΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ posix_spawn() , Π² ΠΊΠ»Π°ΡΡΠ΅ child_process. ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ , ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅, ΡΠΏΡΠΎ Ρ Π°Π΅Ρ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅ child_process ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ operator () (ΡΠΌ. Π»ΠΈΡΡΠΈΠ½Π³ 13.9). ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ child_process ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° for__each (). ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Β«ΠΊΠ»Π°ΡΡΠ½Π°Ρ Π΄ΠΎΡΠΊΠ°Β» ΡΠ΅ΡΠ°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ, ΠΎΠ½Π° ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΈΡ ΠΈΠΌΠ΅Π½Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Solve. ΠΠΎΠ·ΠΆΠ΅ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» Π½ΡΠΆΠ½ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° for_each ().
// ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ.
//...
child_process Task;
for_each(Solve.begin(), Solve.end(), Task);
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Solve Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ operator (), ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 13.9. ΠΠΎΡΠ»Π΅ Π°ΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΡΠ»ΠΊΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ Π·Π°Π΄Π°ΡΠΈ. Π Ρ ΠΎΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ Π·Π΄Π΅ΡΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ PVM-Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΎΠΉΒ» ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ (ΡΠΌ. ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π» 13.5.3.2) ΠΈ ΡΠ°ΠΊ ΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ UNIX/Linux-ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ PVM-ΡΡΠ΅Π΄Ρ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, PVM-Π·Π°Π΄Π°ΡΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ , Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ posix_spawn(), ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ posix_spawn() (Π»ΠΈΠ±ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ fork-exec), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ SIMD, ΡΠΎ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» Π΄Π»Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌ Π·Π½Π°Π½ΠΈΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅ΡΠ°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ argc ΠΈ argv. Π ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Β«ΠΊΠ»Π°ΡΡΠ½Π°Ρ Π΄ΠΎΡΠΊΠ°Β» Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ Π·Π½Π°Π½ΠΈΠΉ, ΠΈ ΠΎΠ½Π° Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅, ΡΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Β«ΠΊΠ»Π°ΡΡΠ½Π°Ρ Π΄ΠΎΡΠΊΠ°Β» ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½ΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ, Π° ΠΏΠΎΡΠΎΠΌΠΊΠΈ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌ Π·Π½Π°Π½ΠΈΠΉ. ΠΡΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ΅Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
#include <stdlib.h>
//.. .
setenv();
unsetenv();
putenv();
ΠΡΠ»ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ posix_spawn () (ΠΈΠ»ΠΈ fork-exec), ΡΠΎ ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ CORBA-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊΠΎ Π²ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠΌ CORBA-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΡΠ±ΠΎΡ CORBA-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» Π²ΠΏΠΎΠ»Π½Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² ΡΡΠ΅Π΄Π΅ intranet ΠΈΠ»ΠΈ Internet, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π² ΡΠ΅Π»ΡΡ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π·Π½Π°Π½ΠΈΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°. ΠΡΠ»ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΡΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΡΠ΅, ΡΠ°ΡΡ ΠΎΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠ΅Π½ΡΡΠ΅, Π° ΡΠ°ΠΌΠ° ΡΠ°Π±ΠΎΡΠ° (Π½Π°ΡΡΡΠΎΠΉΠΊΠ°) β ΠΏΡΠΎΡΠ΅. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π»Π΅Π³ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΡΠΎΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΎΠ΄Π½ΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ΅Π΄Ρ ΡΠΎΠ³Π΄Π° Β«ΠΊΠ»Π°ΡΡΠ½ΡΡ Π΄ΠΎΡΠΊΡΒ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π²ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅. ΠΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π·Π½Π°Π½ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΏΠ°Π΄Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ CORBA-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΎΠ±ΡΡΠ½ΡΡ C++-ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΡΡΡΠΈΡΠ°Π½Π° Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ, ΡΠΎ ΠΏΠΎΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ . Π SMP- ΠΈ ΠΠ Π -ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» Π²Π΅ΡΡΠΌΠ° ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½Π°. Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΠ°ΠΌΠ°Ρ Π²ΡΡΠΎΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠΎΡΠΎΠΊΠΈ ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΡΠ°ΠΊΠΈΡ ΠΆΠ΅ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠ°ΠΊ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ UNIX/Linux-ΠΏΡΠΎΡΠ΅ΡΡΡ. Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ POSIX threads (Pthreads) ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π·Π½Π°Π½ΠΈΠΉ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠΌΠΈ. ΠΠ° ΡΠΈΡ. 13.7.1-13.7.3 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΡΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π·Π½Π°Π½ΠΈΠΉ.
Π ΠΈΡ. 13.7. ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π·Π½Π°Π½ΠΈΠΉ
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Β«ΠΊΠ»Π°ΡΡΠ½Π°Ρ Π΄ΠΎΡΠΊΠ°Β» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, ΡΠΎ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠ΅Β» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Pthread-ΠΌΡΡΡΠ΅ΠΊΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ , ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 11. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ Π·Π½Π°Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ pthread_cond_signal () ΠΈ pthread_cond_broadcast (). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Β«ΠΊΠ»Π°ΡΡΠ½Π°Ρ Π΄ΠΎΡΠΊΠ°Β» ΡΠ°ΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊΠΈ, Π΅ΠΉ Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌ Π²ΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π·Π½Π°Π½ΠΈΠΉ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Β«ΠΊΠ»Π°ΡΡΠ½Π°Ρ Π΄ΠΎΡΠΊΠ°Β» ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π°Π½Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ pthread_cancel (). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Β«ΠΊΠ»Π°ΡΡΠ½Π°Ρ Π΄ΠΎΡΠΊΠ°Β» ΡΠΏΠΎΡΠΎΠ±Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π·Π½Π°Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ pthread_join(). ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π²ΡΡΠΎΠΊΠΎΠ΅ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ»), ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ.
Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΡΠ΅ΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ². ΠΠ° ΡΠΈΡ. 13.8 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΡΡΠΎΠ²Π½ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ.
Π ΠΈΡ. 13.8. Π£ΡΠΎΠ²Π½ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
ΠΡΠ»ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΡΠΎΠ²Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ 2. ΠΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΅ΡΠ΅ Π½Π° ΡΡΠ°ΠΏΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΡΡΠ΅ΠΉΡΠ΅Π΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ ΠΌΠΎΠ΄Π΅Π»Ρ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ», ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Β«ΠΊΠ»Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠΊΠΈΒ» Π² Π²ΠΈΠ΄Π΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π·Π½Π°Π½ΠΈΠΉ β Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° blackboard.
// ΠΠΈΡΡΠΈΠ½Π³ 13.10. Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° blackboard,
//Β ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Ρ
class blackboard{ protected: //.. .
set<long> SuggestionForMajor;