linweibin

  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

State Threads 的一个使用样例

发表于 2017-10-22 | 分类于 tech | 评论数: | 阅读次数:

在examples下面建立一个huge_threads.c的源文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include "st.h"

#define SLEEP_INTERVAL 30 //in ms

void* do_calc(void* arg) {
long pidx = *(long*)arg;
for (;;) {
printf("sthread [#%ld] usleep\n", pidx);
st_usleep(SLEEP_INTERVAL * 1000);
}
return NULL;
}

int main(int argc, char** argv) {
if (argc <= 1 ) {
printf("Test the concurrence of state-threads!\n"
"Usage: %s <sthread_count>\n"
"eg. %s 10000\n", argv[0], argv[0]);
return -1;
}

if (st_init() < 0) {
printf("state threads lib runtime init error!");
return -1;
}

int i, count = atoi(argv[1]);
for(i = 1; i <= count; i++){
if(st_thread_create(do_calc, (void*)&i, 0, 0) == NULL) {
printf("create state thread %d failed\n", i);
return -1;
}
}

st_thread_exit(NULL);
return 0;
}

gcc -I../obj -g huge_threads.c ../obj/libst.a -o huge_threads
./huge_threads 10000
./huge_threads 30000

State Threads 回调终结者

发表于 2017-10-22 | 分类于 tech | 评论数: | 阅读次数:

原文地址: https://coolshell.cn/articles/12012.html

阅读全文 »

聊聊线程技术与线程实现模型

发表于 2017-10-22 | 分类于 tech | 评论数: | 阅读次数:

原文地址: http://blog.jobbole.com/102846/

阅读全文 »

ubuntu14 ssh新增用户

发表于 2017-10-22 | 分类于 tech | 评论数: | 阅读次数:

比如新增一个用户linweibin
1:新增用户

1
2
3
4
sudo adduser linweibin
#切换到linweibin目录下面
su linweibin
cd ~

2:添加公钥内容

1
2
3
4
5
6
7
8
# 1. 建立 ~/.ssh 目录,注意权限需要改为700
mkdir .ssh;
chmod 700 .ssh

# 2. 將公钥内容cat转存到authorized_keys里面
cat /path/id_rsa.pub >> .ssh/authorized_keys
# authorized_keys权限设为644才可以
chmod 644 .ssh/authorized_keys

setjmp和longjmp的用法

发表于 2017-10-22 | 分类于 tech | 评论数: | 阅读次数:

我们知道可以用goto来实现函数内的跳转,setjmp和longjmp则是用于实现函数外的跳转。
因此可以用setjmp和longjmp来实现C的异常处理或者用于实现协程。
statethreads这个协程库就是基于setjmp和longjmp实现的

setjmp把当前函数的调用环境保存到env中
第一次设置会返回0
当longjmp跳转的时候,会返回longjmp的第二个参数
int setjmp (jmp_buf env);
longjmp在当前位置跳转到之前保存的env的环境中
void longjmp (jmp_buf env, int val);

来看一个例子

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <setjmp.h>

int main() {
jmp_buf env;
int val;
val=setjmp(env);
printf ("val is %d\n",val);
if (!val)
longjmp(env, 1);
return 0;
}

输出的结果

1
2
val is 0
val is 1

opencart整体架构分析

发表于 2017-05-04 | 分类于 tech | 评论数: | 阅读次数:

opencart是一个完全免费的开源系统,采用MVCL的框架

阅读全文 »

123

林伟彬

14 日志
3 分类
11 标签
GitHub E-Mail
© 2020 林伟彬
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Gemini v7.0.0
|