1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

ST: Support thread-local for multiple threads.

1. All statick and global variables is thread-local.
2. Call st_init() to init st for each thread.
3. Notice that ST is isolate for threads.
This commit is contained in:
winlin 2021-04-05 12:37:53 +08:00
parent d117145b95
commit 339d3b31cc
8 changed files with 61 additions and 54 deletions

View file

@ -56,20 +56,20 @@
// Global stat.
#if defined(DEBUG) && defined(DEBUG_STATS)
unsigned long long _st_stat_recvfrom = 0;
unsigned long long _st_stat_recvfrom_eagain = 0;
unsigned long long _st_stat_sendto = 0;
unsigned long long _st_stat_sendto_eagain = 0;
unsigned long long _st_stat_read = 0;
unsigned long long _st_stat_read_eagain = 0;
unsigned long long _st_stat_readv = 0;
unsigned long long _st_stat_readv_eagain = 0;
unsigned long long _st_stat_writev = 0;
unsigned long long _st_stat_writev_eagain = 0;
unsigned long long _st_stat_recvmsg = 0;
unsigned long long _st_stat_recvmsg_eagain = 0;
unsigned long long _st_stat_sendmsg = 0;
unsigned long long _st_stat_sendmsg_eagain = 0;
__thread unsigned long long _st_stat_recvfrom = 0;
__thread unsigned long long _st_stat_recvfrom_eagain = 0;
__thread unsigned long long _st_stat_sendto = 0;
__thread unsigned long long _st_stat_sendto_eagain = 0;
__thread unsigned long long _st_stat_read = 0;
__thread unsigned long long _st_stat_read_eagain = 0;
__thread unsigned long long _st_stat_readv = 0;
__thread unsigned long long _st_stat_readv_eagain = 0;
__thread unsigned long long _st_stat_writev = 0;
__thread unsigned long long _st_stat_writev_eagain = 0;
__thread unsigned long long _st_stat_recvmsg = 0;
__thread unsigned long long _st_stat_recvmsg_eagain = 0;
__thread unsigned long long _st_stat_sendmsg = 0;
__thread unsigned long long _st_stat_sendmsg_eagain = 0;
#endif
#if EAGAIN != EWOULDBLOCK
@ -81,7 +81,7 @@ unsigned long long _st_stat_sendmsg_eagain = 0;
#define _LOCAL_MAXIOV 16
/* File descriptor object free list */
static _st_netfd_t *_st_netfd_freelist = NULL;
static __thread _st_netfd_t *_st_netfd_freelist = NULL;
/* Maximum number of file descriptors that the process can open */
static int _st_osfd_limit = -1;