mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: MIT */
 | 
						|
/* Copyright (c) 2013-2024 The SRS Authors */
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
#include <st.h>
 | 
						|
#include <assert.h>
 | 
						|
 | 
						|
st_mutex_t lock;
 | 
						|
st_cond_t cond;
 | 
						|
 | 
						|
void* start(void* arg)
 | 
						|
{
 | 
						|
    printf("ST: thread run\n");
 | 
						|
 | 
						|
    printf("ST: thread wait for a while\n");
 | 
						|
    st_usleep(1.5 * 1000 * 1000);
 | 
						|
    printf("ST: thread wait done\n");
 | 
						|
 | 
						|
    int r0 = st_cond_signal(cond);
 | 
						|
    printf("ST: thread cond signal, r0=%d\n", r0);
 | 
						|
 | 
						|
    printf("ST: thread lock\n");
 | 
						|
    r0 = st_mutex_lock(lock);
 | 
						|
    assert(r0 == 0);
 | 
						|
 | 
						|
    r0 = st_mutex_unlock(lock);
 | 
						|
    printf("ST: thread unlock\n");
 | 
						|
 | 
						|
    return NULL;
 | 
						|
}
 | 
						|
 | 
						|
int main(int argc, char** argv)
 | 
						|
{
 | 
						|
    int r0 = st_init();
 | 
						|
    assert(r0 == 0);
 | 
						|
    printf("ST: main init ok\n");
 | 
						|
 | 
						|
    lock = st_mutex_new();
 | 
						|
    cond = st_cond_new();
 | 
						|
 | 
						|
    st_thread_t trd = st_thread_create(start, NULL, 1, 0);
 | 
						|
    printf("ST: main create ok\n");
 | 
						|
 | 
						|
    printf("ST: main lock\n");
 | 
						|
    r0 = st_mutex_lock(lock);
 | 
						|
    assert(r0 == 0);
 | 
						|
 | 
						|
    printf("ST: main cond waiting\n");
 | 
						|
    r0 = st_cond_wait(cond);
 | 
						|
    printf("ST: main cond wait ok, r0=%d\n", r0);
 | 
						|
 | 
						|
    r0 = st_mutex_unlock(lock);
 | 
						|
    printf("ST: main unlock\n");
 | 
						|
 | 
						|
    st_thread_join(trd, NULL);
 | 
						|
    printf("ST: main done\n");
 | 
						|
 | 
						|
    st_mutex_destroy(lock);
 | 
						|
    st_cond_destroy(cond);
 | 
						|
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
 |