1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-13 03:41:55 +00:00

ST: Research adds examples that demos pthread and helloworld. v6.0.118 (#3989)

1. `trunk/research/st/exceptions.cpp` About exceptions with ST, works
well on linux and mac, not work on cygwin.
2. `trunk/research/st/pthreads.cpp` About pthreads with ST, works well
on all platforms.
3. `trunk/research/st/hello.cpp` Hello world, without ST, works well on
all platforms.
4. `trunk/research/st/hello-world.cpp` Hello world, with ST, works well
on all platforms.
5. `trunk/research/st/hello-st.cpp` A very simple version for hello
world with ST, works well on all platforms.
This commit is contained in:
Winlin 2024-03-24 09:28:46 +08:00 committed by GitHub
parent ce2ce1542f
commit ff91757a3a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 113 additions and 1 deletions

View file

@ -7,6 +7,7 @@ The changelog for SRS.
<a name="v6-changes"></a>
## SRS 6.0 Changelog
* v6.0, 2024-03-24, Merge [#3989](https://github.com/ossrs/srs/pull/3989): ST: Research adds examples that demos pthread and helloworld. v6.0.118 (#3989)
* v6.0, 2024-03-19, Merge [#3958](https://github.com/ossrs/srs/pull/3958): Add a TCP proxy for debugging. v6.0.117 (#3958)
* v6.0, 2024-03-20, Merge [#3964](https://github.com/ossrs/srs/pull/3964): WebRTC: Add support for A/V only WHEP/WHEP player. v6.0.116 (#3964)
* v6.0, 2024-03-19, Merge [#3990](https://github.com/ossrs/srs/pull/3990): System: Disable feature that obtains versions and check features status. v6.0.115 (#3990)

View file

@ -0,0 +1,29 @@
/*
# !!! ST does not support C++ exceptions on cygwin !!!
g++ exceptions.cpp ../../objs/st/libst.a -g -O0 -o exceptions && ./exceptions
*/
#include <stdio.h>
#include <exception>
#include "../../objs/st/st.h"
int handle_exception() {
try {
throw 3;
} catch (...) {
return 5;
}
}
void* foo(void* arg) {
int r0 = handle_exception();
printf("r0=%d\n", r0);
return NULL;
}
int main(int argc, char** argv) {
st_init();
st_thread_create(foo, NULL, 0, 0);
st_thread_exit(NULL);
return 0;
}

View file

@ -0,0 +1,16 @@
/*
g++ hello-st.cpp ../../objs/st/libst.a -g -O0 -o hello-st && ./hello-st
*/
#include <stdio.h>
#include "../../objs/st/st.h"
void foo() {
st_init();
st_sleep(1);
printf("Hello World, ST!\n");
}
int main() {
foo();
return 0;
}

View file

@ -0,0 +1,19 @@
/*
g++ hello-world.cpp ../../objs/st/libst.a -g -O0 -o hello-world && ./hello-world
*/
#include <stdio.h>
#include "../../objs/st/st.h"
void foo() {
st_init();
for (int i = 0; ; i++) {
st_sleep(1);
printf("#%d: main: working\n", i);
}
}
int main() {
foo();
return 0;
}

View file

@ -0,0 +1,11 @@
/*
g++ hello.cpp -g -O0 -o hello && ./hello
*/
void foo() {
}
int main(int argc, char** argv) {
foo();
return 0;
}

View file

@ -0,0 +1,36 @@
/*
Directly compile c++ source and execute:
g++ pthreads.cpp ../../objs/st/libst.a -g -O0 -o pthreads && ./pthreads
*/
#include <stdio.h>
#include <pthread.h>
#include "../../objs/st/st.h"
void* foo(void* arg) {
while (true) {
printf("Hello, child thread\n");
st_sleep(1);
}
return NULL;
}
void* pfn(void* arg) {
st_init();
st_thread_create(foo, NULL, 0, 0);
st_thread_exit(NULL);
return NULL;
}
int main(int argc, char** argv) {
st_init();
pthread_t trd;
pthread_create(&trd, NULL, pfn, NULL);
while (true) {
printf("Hello, main thread\n");
st_sleep(1);
}
return 0;
}

View file

@ -9,6 +9,6 @@
#define VERSION_MAJOR 6
#define VERSION_MINOR 0
#define VERSION_REVISION 117
#define VERSION_REVISION 118
#endif