1*1c60b9acSAndroid Build Coastguard Worker# lws minimal ws server (threads) + SMP
2*1c60b9acSAndroid Build Coastguard Worker
3*1c60b9acSAndroid Build Coastguard WorkerThis demonstrates both independent threads creating content
4*1c60b9acSAndroid Build Coastguard Workeras in the -threads example, and multiple service threads
5*1c60b9acSAndroid Build Coastguard Workeras in the http-server-smp example (but with ws).
6*1c60b9acSAndroid Build Coastguard Worker
7*1c60b9acSAndroid Build Coastguard Worker## build
8*1c60b9acSAndroid Build Coastguard Worker
9*1c60b9acSAndroid Build Coastguard WorkerYou must first build libwebsockets itself with cmake `-DLWS_MAX_SMP=8`
10*1c60b9acSAndroid Build Coastguard Workeror some other number greater than one.
11*1c60b9acSAndroid Build Coastguard Worker
12*1c60b9acSAndroid Build Coastguard Worker```
13*1c60b9acSAndroid Build Coastguard Worker $ cmake . && make
14*1c60b9acSAndroid Build Coastguard Worker```
15*1c60b9acSAndroid Build Coastguard Worker
16*1c60b9acSAndroid Build Coastguard WorkerPthreads is required on your system.
17*1c60b9acSAndroid Build Coastguard Worker
18*1c60b9acSAndroid Build Coastguard Worker## usage
19*1c60b9acSAndroid Build Coastguard Worker
20*1c60b9acSAndroid Build Coastguard Worker```
21*1c60b9acSAndroid Build Coastguard Worker $ ./lws-minimal-ws-server-threads-smp
22*1c60b9acSAndroid Build Coastguard Worker[2019/01/28 06:59:17:4217] USER: LWS minimal ws server + threads + smp | visit http://localhost:7681
23*1c60b9acSAndroid Build Coastguard Worker[2019/01/28 06:59:17:4219] NOTICE:   Service threads: 2
24*1c60b9acSAndroid Build Coastguard Worker[2019/01/28 06:59:17:4220] NOTICE: LWS_CALLBACK_EVENT_WAIT_CANCELLED in svc tid 0x7fec48af8700
25*1c60b9acSAndroid Build Coastguard Worker[2019/01/28 06:59:17:4220] NOTICE: LWS_CALLBACK_EVENT_WAIT_CANCELLED in svc tid 0x7fec48af8700
26*1c60b9acSAndroid Build Coastguard Worker...
27*1c60b9acSAndroid Build Coastguard Worker```
28*1c60b9acSAndroid Build Coastguard Worker
29*1c60b9acSAndroid Build Coastguard WorkerVisit http://localhost:7681 on multiple browser windows.  You may need to open
30*1c60b9acSAndroid Build Coastguard Worker4 before the second service thread is used (check "svc tid" in the browser output).
31*1c60b9acSAndroid Build Coastguard Worker
32*1c60b9acSAndroid Build Coastguard WorkerTwo lws service threads are started.
33*1c60b9acSAndroid Build Coastguard Worker
34*1c60b9acSAndroid Build Coastguard WorkerTwo separate asynchronous threads generate strings and add them to a ringbuffer,
35*1c60b9acSAndroid Build Coastguard Workersignalling all lws service threads to send new entries to all the browser windows.
36*1c60b9acSAndroid Build Coastguard Worker
37*1c60b9acSAndroid Build Coastguard WorkerThis demonstrates how to safely manage asynchronously generated content
38*1c60b9acSAndroid Build Coastguard Workerand hook it up to the lws service threads.
39*1c60b9acSAndroid Build Coastguard Worker
40