我最近阅读了Paul McKenney的2010年白皮书"内存障碍:软件黑客的硬件视图".
我非常感谢关于下面给出的一小部分C代码的反馈/评论/指导,这些代码实现了M&S队列排队功能,特别是在内存和编译器障碍方面.
此代码使用指针计数器对来处理ABA,并且为了这篇文章,应该被认为是为x86/x64编写的.
对于这篇文章,内联评论现在都写完了,并且是这篇文章的一部分,因为它们表达了我现在的想法.
为简洁起见,我在结构中删除了断言代码和缓存行填充等.
目前,我认为代码很破碎,但我想确保我认为正确的原因.
#define PAC_SIZE 2
struct lfds_queue_element
{
struct lfds_queue_element
*volatile next[PAC_SIZE];
void
*user_data;
};
struct lfds_queue_state
{
struct lfds_queue_element
*volatile enqueue[PAC_SIZE];
struct lfds_queue_element
*volatile dequeue[PAC_SIZE];
atom_t volatile
aba_counter;
};
void lfds_queue_internal_dcas_pac_enqueue( struct lfds_queue_state *lqs, struct lfds_queue_element *lqe )
{
ALIGN(ALIGN_DOUBLE_POINTER) struct lfds_queue_element
*local_lqe[PAC_SIZE], *enqueue[PAC_SIZE], *next[PAC_SIZE];
unsigned char cas_result = 0;
unsigned int backoff_iteration = 1;
/* TRD : here we have been passed a new element to place
into the …
Run Code Online (Sandbox Code Playgroud) 我的守则
var json = xmlhttp.responseText; //ajax response from my php file
obj = JSON.parse(json);
alert(obj.result);
Run Code Online (Sandbox Code Playgroud)
在我的PHP代码中
$result = 'Hello';
echo '{
"result":"$result",
"count":3
}';
Run Code Online (Sandbox Code Playgroud)
问题是:当我发出警报时obj.result
,它会显示"$result"
,而不是显示Hello
.我怎么解决这个问题?
我试图在我的服务器上编码很多视频,但FFMPEG是资源密集型的,所以我想设置某种形式的排队.我的网站的其余部分使用PHP,但我不知道我是否应该使用PHP,Python,BASH等.我在想我可能需要使用CRON,但我不确定如何告诉ffmpeg启动一个新任务(从列表中)完成之后的任务.
void xstrcpy ( char *t, char *s );
void main(void ) {
char source[ ] = "Sayonara" ;
char target[20] ;
xstrcpy ( target, source ) ;
printf ( "\nsource string = %s", source);
printf ( "\ntarget string = %s", target ) ;
}
void xstrcpy ( char *t, char *s ) {
while ( *s != '\0' ){
*t = *s ;
t++ ; s++ ;
}
*t = '\0' ;
}
Run Code Online (Sandbox Code Playgroud)
这段代码给出了输出:
source string = Sayonara
target string …
Run Code Online (Sandbox Code Playgroud)