...ΠΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ 3 ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ([
000000000000000000501ΠΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π»ΡΠ½Π΅Π΅ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΠ°ΡΡΠΈΠ½Π° Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² (Π·Π΄Π΅ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π΄Π»ΠΈΠ½Π½Π΅Π΅, Π° Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΡΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ - ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ), Π½ΠΎ ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΡΠ΅Π±ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ° Π΄Π»Ρ ΠΈΡ ΠΎΡΠΌΡΡΠ»Π΅Π½ΠΈΡ:
# n1 10
3:Β [0000000]->[0000000] ... [0000501]->[0000501]
4:Β [0000000]->[0000501] ... [0001003]->[0001003]
5:Β [0000000]->[0001003] ... [0001505]->[0001505]
6:Β [0000000]->[0001505] ... [0002007]->[0002007]
7:Β [0000000]->[0002007] ... [0002508]->[0002508]
8:Β [0000000]->[0002508] ... [0003010]->[0003010]
9:Β [0000000]->[0003010] ... [0003512]->[0003512]
10: [0000000]->[0003512] ... [0004014]->[0004014]
11: [0000000]->[0004014] ... [0004516]->[0004516]
12: [0000000]->[0004516] ... [0005017]->[0005018]
3:Β [0005501]->[0005501] ... [0006003]->[0006003]
5:Β [0008024]->[0008024] ... [0008526]->[0008526]
7:Β [0008038]->[0008526] ... [0009028]->[0009028]
4:Β [0009273]->[0009273] ... [0009775]->[0009775]
6:Β [0010377]->[0010377] ... [0010878]->[0010878]
8:Β [0010590]->[0010878] ... [0011380]->[0011380]
9:Β [0010952]->[0011380] ... [0011882]->[0011882]
12: [0011297]->[0011882] ... [0012384]->[0012384]
11: [0011356]->[0012384] ... [0012886]->[0012886]
10: [0012024]->[0012886] ... [0013387]->[0013388]
3:Β [0012874]->[0013388] ... [0013889]->[0013889]
7:Β [0014888]->[0014888] ... [0015390]->[0015390]
4:Β [0016254]->[0016254] ... [0016756]->[0016756]
5:Β [0017646]->[0017646] ... [0018148]->[0018148]
6:Β [0019088]->[0019088] ... [0019590]->[0019590]
11: [0020206]->[0020206] ... [0020708]->[0020708]
8:Β [0020320]->[0020708] ... [0021210]->[0021210]
10: [0021078]->[0021210] ... [0021712]->[0021712]
12: [0021384]->[0021712] ... [0022213]->[0022213]
7:Β [0021630]->[0022213] ... [0022715]->[0022715]
9:Β [0021811]->[0022715] ... [0023217]->[0023217]
3:Β [0022009]->[0023217] ... [0023719]->[0023719]ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ²
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ, ΠΏΡΠΎΠ΄ΠΈΠΊΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΄Π΅ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ QNX. ΠΡΠΎ ΡΠ΄Π°ΡΠ½Π°Ρ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, Π²ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ Π² ΡΠ°ΠΉΠ»Π΅
<sys/dispatch.h>Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΊΠΎΠ΄Π° ΠΌΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ Π½Π°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄Π»Ρ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΡΠ΅Π»Π΅ΠΉ, Π½ΠΎ Π²ΡΠ΅ΠΌ ΠΈΠΌ Π±ΡΠ»ΠΎ ΠΏΡΠΈΡΡΡΠ΅ ΠΎΠ΄Π½ΠΎ: ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² Π½ΠΈΡ Π±ΡΠ»ΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ. ΠΡΠΎ ΠΈ Π±ΡΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ΠΏΡΠ»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠ°Π·Π΄Π΅Π»ΡΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΡ QNX ΠΈΠ΄ΡΡ ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅: ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ»ΠΎΠ² ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΡ (Ρ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΏΠΎΡΠΎΠΊΠ°) ΠΏΠΎΡΠΎΠΊΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ²ΠΎΠΈΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΡΠΎΡΡΠ°Π²ΠΎΠΌ ΡΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½ΡΠΆΠ΅Π½ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ QNX Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² - ΠΎΡΠ½ΠΎΠ²Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΠ‘ QNX. ΠΠΎ ΠΈ ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠΎΡΠ½Π΅ΠΉΡΠ΅Π΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π½Π°ΠΌΠΈ ΠΎΠΏΠΈΡΠ°Π½ Π² ΠΊΠ½ΠΈΠ³Π΅ [4] Π² Π³Π»Π°Π²Π΅ Β«Π‘Π΅ΡΠ²Π΅Ρ TCP/IP... ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Ρ ΠΎΡΠΎΡΠΈΡ ΠΈ ΡΠ°Π·Π½ΡΡ Β». ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΡΠ΅ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΠΈΠΉ TCP/IP-ΡΠ΅ΡΠ²Π΅Ρ, Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎ Π΄Π»Ρ Π½Π°Ρ Π½Π΅Π²Π°ΠΆΠ½ΠΎ:
#include <pthread.h>
#include <sys/dispatch.h>
static int ls; // ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΡΠΈΠΉ TCP-ΡΠΎΠΊΠ΅Ρ
THREAD_POOL_PARAM_T* alloc(THREAD_POOL_HANDLE_T* h) {
Β return (THREAD_POOL_PARAM_T*)h;
}
// ΡΡΠ½ΠΊΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²
THREAD_POOL_PARAM_T* block(THREAD_POOL_PARAM_T* p) {
Β int rs = accept(ls, NULL, NULL);
Β if (rs < 0) errx("accept error");
Β return(THREAD_POOL_PARAM_T*)rs;
}
int handler(THREAD_POOL_PARAM_T* p) {
Β retrans((int)p);
Β close((int)p);
Β delay(250);
Β cout << pthread_self() << flush;
Β return 0;
}