原子操作为了实现一个互斥,自己定义一个变量作为标记 [问题点数:30分]

Bbs1
本版专家分:0
结帖率 86.67%
Bbs1
本版专家分:0
Bbs1
本版专家分:0
原子操作标记
<em>原子</em><em>操作</em>(atomic operation)是不需要synchronized",这是Java多线程编程的老生常谈了。所谓<em>原子</em><em>操作</em>是指不会被线程调度机制打断的<em>操作</em>;这种<em>操作</em>一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另<em>一个</em>线程)   i++不是<em>原子</em><em>操作</em>。理由: 1.i++分为三个阶段: 内存到寄存器 寄存器自增 写回内存 这三个阶段中间都可以被
如何实现一个原子操作?
在windows平台下,如何<em>实现</em><em>原子</em><em>操作</em>。rn我有几句代码,要求在执行的时候不能发生进程、线程切换或者硬件中断切换,也就是这几句代码不能被分割,有没有这样的<em>实现</em>手段?rn
如何实现一个原子操作
在windows平台下,如何<em>实现</em><em>原子</em><em>操作</em>。rn我有几句代码,要求在执行的时候不能发生进程、线程切换或者硬件中断切换,也就是这几句代码不能被分割,有没有这样的<em>实现</em>手段?
怎么实现一个原子操作
我写的是<em>一个</em>普通的用户态程序(非核态),我想写<em>一个</em><em>原子</em><em>操作</em>,不知道有没有这样的函数接口,像spinlock只能用在核态,不知道还没有其他的函数接口。
Linux互斥与同步之原子操作
例子 <em>一个</em>全局共享的<em>变量</em>flag int flag=0 进程A void funcA() { flag++; } 进程B void funcB() { flag++ } 在进程A和进程B都运行起来后,flag的值应该会是多少? case1 funcA先执行,再执行funcB。或者 funcB先执行,再执行funcA。 上述无论那个先执行,结果都是
一个互斥变量的思路
<em>互斥</em><em>变量</em>主要保护<em>一个</em>链表,(1)添加和删除时禁止其它任何<em>操作</em>,(2)读取链表时其它线程也可以读取链表,禁止删除和添加。rnrn自己写了<em>一个</em>,但是添加和删除<em>操作</em>渴求而死。求<em>一个</em>更好的思路,能附上代码就更好了。rnrnrn//MyLock.hrnrn[code=C/C++]rnrn#pragma oncernrn#include rnrnclass CMyLock rnrnpublic:rn CMyLock();rn virtual ~CMyLock();rn enum LOCK_MODErn rn LOCK_MODE_NONE,rn LOCK_MODE_ONLY_ONE, //独占模式rn LOCK_MODE_MORE_USER, //分享模式rn ;rnprivate:rn struct LOCK_ITMErn rn DWORD nThreadID;rn LOCK_MODE nLockMode;rn ;rn typedef std::list CListItem;rn typedef std::list::iterator CPListItem;rnrnprivate:rn LOCK_MODE m_curMode;rn CCriticalSection m_cs;rn CListItem m_listItem;rn CCriticalSection m_csList;rnpublic:rn BOOL Lock(LOCK_MODE const &nMode = LOCK_MODE_MORE_USER);rn BOOL Unlock();rn;rnrn[/code]rnrn//MyLock.cpprn[code=C/C++]rnrn#include "MyLock.h"rnrnrnCMyLock::CMyLock()rn :m_curMode(LOCK_MODE_NONE)rnrn rnrnrnCMyLock::~CMyLock()rnrnrnrnrnBOOL CMyLock::Lock(LOCK_MODE const &lockMode)rnrn //注意 锁和当前线程关联,解锁时只能是当前线程。rn LOCK_ITME item = 0;rn item.nThreadID = GetCurrentThreadId();rn item.nLockMode = lockMode;rn rn BOOL bWait = TRUE;rnrn switch (lockMode)rn rn case LOCK_MODE_ONLY_ONE:rn bWait = TRUE;rn break;rn case LOCK_MODE_MORE_USER:rn if (LOCK_MODE_MORE_USER == m_curMode)rn rn bWait = FALSE;rn rn elsern rn bWait = TRUE;rn rn break;rn default:rn ASSERT(0);rn return FALSE;rn break;rn rnrn if (bWait)rn rn m_cs.Lock();rn rnrn m_csList.Lock();rn m_curMode = lockMode;rn m_listItem.push_back(item);rn m_csList.Unlock();rnrn return TRUE;rnrnrnBOOL CMyLock::Unlock()rnrn //只能释放当前线程的锁rn DWORD const nThreadID = GetCurrentThreadId();rn BOOL bFind = FALSE;rn m_csList.Lock();rn CPListItem it = m_listItem.begin();rn for (;it != m_listItem.end(); ++it)rn rn if (nThreadID == it->nThreadID)rn rn m_listItem.erase(it);rn bFind = TRUE;rn break;rn rn rn if (m_listItem.empty())rn rn m_curMode = LOCK_MODE_NONE;rn m_cs.Unlock();rn rn m_csList.Unlock();rn ASSERT(bFind);rn return bFind;rnrnrn[/code]
JAVA 如何实现一个原子操作
我需要在订单完成支付后修改订单的状态为已支付,因为支付需要使用第三方的接口,如微信或者支付宝,我如何保证数据库<em>操作</em>(修改订单状态)和调用支付,同时成功或者同时失败!
变量原子操作
1、volatile  适用于单线程写,多线程读的情况,<em>变量</em>值可以实时同步到多线程中。2、AtomicInteger 系列适用于 多线程同时写,保证数据串行执行。
怎样把自己定义变量作为数据库查询的条件?
DIM searchdate as DATErnrn我看到别的程序以下语句可以通过,而我这里就不行,不知道为什么?rnstr=rn"select * from table1rnwhere table1.date =# " & searchdate & " # "rnrn如果要把自己<em>定义</em>的<em>变量</em>作为查询条件以上语法正确吗?还是用其它的办法?rn
Linux 一个变量进行互斥操作
RT 具体怎么<em>操作</em>,示范一点,谢谢 各位老大大哥大姐大嫂大妈小弟小妹,小屁孩,小妞,小姐,先生
互斥是不是一个系统级别的变量
同步跨进程的线程可以使用<em>互斥</em>对象,所以<em>互斥</em>对象是不是<em>一个</em>系统级别的<em>变量</em>,而不是属于单个进程空间的?
为了让程序只运行一个实例,我用原子操作
为了让程序只运行<em>一个</em>实例,我用<em>原子</em><em>操作</em>:rnvoid __fastcall TMain::FormCreate(TObject *Sender)rnrn rn DWORD nExitCode;rn nAtom=GlobalFindAtom("LLYFPM");rn if(nAtom!=0)rn rn GetExitCodeProcess(GetCurrentProcess(),&nExitCode);rn ExitProcess(nExitCode);rn rn elsern rn GlobalAddAtom("LLYFPM"); rn rnrnrnvoid __fastcall TMain::FormClose(TObject *Sender, TCloseAction &Action)rnrn GlobalDeleteAtom(nAtom);rnrnrnrn//nAtom是<em>一个</em>全局的ATOM型的<em>变量</em>rn这样的话,程序倒确实只能运行<em>一个</em>实例,但是,在程序退出后,仍然不能运行了,是不是就是说这个Atom没有被删除?应该如何解决呢?
如何定义一个原子操作
在windows平台下,如何<em>实现</em><em>原子</em><em>操作</em>。rn我有几句代码,要求在执行的时候不能发生进程、线程切换或者硬件中断切换,也就是这几句代码不能被分割,有没有这样的<em>实现</em>手段?
一个数据库原子操作的问题
有<em>一个</em>程序,有两个线程在运行,<em>一个</em>在进行数据库的<em>操作</em>,<em>一个</em>干别的事,就是当进行数据库<em>操作</em>的线程在执行到一条SQL语句的时候它要用很多时间(数据量很大),我想知道在执行数据库<em>操作</em>的线程在运行的时候,CPU还会分时间片去执行另外<em>一个</em>线程吗!如果会的话,是不是违反了数据库的ACID的A准则啊
Interlocked 原子操作一个疑问
Interlocked 系列函数 提供了 + = 等<em>原子</em><em>操作</em>rn我想问的是:rnInterlockedCompareExchange 这个函数是用来比较rn但是我不需要Exchange 只需要InterlockedCompare怎么办?
难度!如何自己定义一个事件,与一个自己声明的变量挂钩?
如何自己<em>定义</em><em>一个</em>事件,与<em>一个</em>自己声明的<em>变量</em>挂钩?rnrn比如说:在Public中<em>定义</em>了<em>一个</em>Bool的Chanage;怎样(能否)<em>定义</em><em>一个</em>事件(函数)来监控<em>变量</em>Chanage,当Chanage被改变时,触发这个事件(函数)?
多线程中的count++问题---互斥、自旋、原子操作
1.<em>互斥</em>mutex:阻止其他线程的进入,其他线程会挂起 2.自旋锁:一直等,(while(1))线程不会切换,<em>操作</em>时间比较短,简单的适合自旋锁 3.<em>原子</em><em>操作</em>:三条指令合在一起 #include&lt;stdio.h&gt; #include&lt;pthread.h&gt; #include&lt;unistd.h&gt; #define THREAD_NUM 10 pthread_mut...
linux驱动中的互斥途径一二:中断屏蔽和原子操作
介绍并发解决办法中的 中断屏蔽 和 <em>原子</em><em>操作</em>
[Linux]互斥机制(中断屏蔽、原子操作、自旋锁、信号量)
基本概念 临界区 <em>互斥</em>机制 用户空间和内核空间 <em>互斥</em>机制 中断屏蔽、<em>原子</em><em>操作</em>、自旋锁、信号量
6-定时器_锁_互斥体_自旋锁_原子操作
内核定时器编程:时钟脉冲:它是soc的重要指标和性能参数。供内核使用(进程调度,计时)。也称为时钟中断,通常是<em>操作</em>系统的0号中断。jiffies: 内核中表示自系统开机以来,一共发生了多少次时钟脉冲。 HZ: 内核中表示一秒钟发生多少次时钟脉冲 Tick: 内核中表示两次时钟脉冲之间的时间间隔。 内核中在软件层面。提供了一系列数据结构和函数供于底层驱动计时编程。步骤: 1.<em>定义</em>: struct
自己定义一个依赖属性 Wpf
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections.ObjectModel; using System.Windows;namespace MysherOCRReader { class GetPhotoInfoRegion
关于一个互斥的问题
在测试多线程在<em>一个</em>时间片可以运行次数的问题时,用到了<em>一个</em>全局<em>变量</em>main_counter,这个<em>变量</em>是用来保存所有的3个线程总共运行次数的,还有<em>一个</em>数组counter,用来保存每个进程运行次数的,最后在main函数里面对counter数组进行求和,赋值给sum。代码如下:rn[code=c]rn/*POSIX 下线程控制的实验程序残缺版*/rn#include rn#include rn#include rn#include rn#include rnrn#define MAX_THREAD 3 /* 线程的个数 */rnrnunsigned long long main_counter, counter[MAX_THREAD];rnvoid *thread_worker(void *);rnpthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;rnpthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;rnrnintrnmain(int argc, char* argv[])rnrn int i, rtn, ch;rn pthread_t pthread_id[MAX_THREAD] = 0; /* 存放线程id*/rn pthread_t t;rnrn for (i = 0; i < MAX_THREAD; i++)rn rn /* 在这里填写代码,用pthread_create建<em>一个</em>普通的线程,rn 线程id存入pthread_id[i],线程执行函数是thread_workerrn 并i作为参数传递给线程 */rn pthread_create(&t, NULL, thread_worker,&i);rn pthread_id[i] = t;rn rn dorn rn /* 用户按一次回车执行下面的循环体一次。按q退出 */rn unsigned long long sum = 0;rn unsigned long long tmp[MAX_THREAD];rn /* 求所有线程的counter的和 */rn for (i = 0; i < MAX_THREAD; i++)rn rn /* 求所有counter的和 */rn sum += counter[i];rn printf("%llu\n ", counter[i]);rn rn printf("%llu-----%llu\n", main_counter, sum);rn while ((ch = getchar()) != 'q');rn return 0;rnrnrnvoidrn*thread_worker(void* p)rnrn /*在这里填写代码,把main中的i的值传递给thread_num*/rn int *thread_num = (int *)p;rn for(;;)rn rn /*无限循环*/rn pthread_mutex_lock(&mutex1);rn counter[*thread_num]++; /* 本线程的counter加一 */rn main_counter++; /* 主counter 加一 */rn pthread_mutex_unlock(&mutex1);rn rnrn[/code]rn[color=#FF0000]现在想通过用<em>互斥</em>,来达到main_counter和sum相等[/color],在这里我产生了疑问,请教一下大家。就是我想在进行for循环求值的时候就将counter数组和main_counter锁住,不知道应该怎么<em>实现</em>?rn并且我发现,在运行main函数的for循环时,线程都有可能被抢占,所以求得sum值和main_counter值根本不可能相等。不知道该怎么做才能<em>实现</em>要求?(上面红字描述)
如何自己定义一个文件格式
本人刚刚入门计算机,对编程语言有一定了解rn现在想做<em>一个</em>东西,每次关闭的时候想保存数据到自己<em>定义</em>的文件格式中,但是这个文件不能被别人轻易看到,咋做啊rn求大神指引出路rn万分感谢
怎么自己定义一个文件格式
比如做<em>一个</em>类似*。txt的文件,用我自己的程序打开。rn谁可以做<em>一个</em>标准的样例,以及它的存贮读取方法。谢谢了。
如何自己定义一个文件类型
小弟最近要做课程大作业,我们小组想做<em>一个</em>格式灵活屏幕编辑器,需要自己<em>定义</em>一种文件类型,由我们的程序来生成和解读。不过毫无方向,求大神指点,请给一些方法或者思路,或者需要一些什么知识的,谢谢~
怎样自己定义一个函数
我想自己<em>定义</em><em>一个</em>函数,该怎么做?
原子操作实现
<em>原子</em><em>操作</em><em>实现</em> 关于CAS等<em>原子</em><em>操作</em>:          在开始说无锁队列之前,我们需要知道<em>一个</em>很重要的技术就是CAS<em>操作</em>——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的<em>原子</em><em>操作</em>,X86下对应的是CMPXCHG 汇编指令。有了这个<em>原子</em><em>操作</em>,我们就可以用其来<em>实现</em>各种无锁(lock free)的数据结构。 这个<em>操作</em>用C语
制作一个网页生成器,实现if...else标记,实现循环标记
如题:rn html的模板如下rn[code=HTML]rn rn $titlern rn rn $contentrn rn 是:truern rn rn 是:falsern rn rn[/code]rn下面是我写的,只<em>实现</em>了$title和$content的东西。rn[code=Java]public class SetHtml rnrn public static void main(String[] args) throws Exception rn File oldFile = new File("MyHtml.html");rn File newFile = new File("NewHtml.html");rn Map map = new HashMap();rn map.put("title", "测试标题");rn map.put("content", "测试内容");rn createHtml(oldFile,newFile,map);rn rn rn private static void createHtml(File oldFile,File newFile,Map map) throws Exception rn long length = (long) oldFile.length();rn if(length > 3000000) rn throw new Exception("文件过大");rn rn int len = (int)length;rn byte[] b = new byte[len];rn InputStream is = new FileInputStream(oldFile);rn is.read(b);rn is.close();rn String strHtml = new String(b);rn Pattern pattern = Pattern.compile("\\$\\\\s*(\\w+)\\s*\\");rn Matcher matcher = pattern.matcher(strHtml);rn StringBuffer sb = new StringBuffer();rn while(matcher.find()) rn matcher.appendReplacement(sb, map.get(matcher.group(1)).toString());rn rn matcher.appendTail(sb);rn newFile.createNewFile();rn OutputStream os = new FileOutputStream(newFile);rn// getIf(sb.toString());rn// getElse(sb.toString());rn os.write(sb.toString().getBytes());rn os.close(); rn [/code]rn<em>实现</em>后的HTML结果为[code=HTML]rn rn 测试标题rn rn rn 测试内容rn rn 是:truern rn rn 是:falsern rn rn[/code]rn用正则表达式,现在要弄if...else,判断中test是否true,则显示相应的rn请高手支援。。谢谢啊rnrn
一个关于互斥的问题!
<em>一个</em>写(WriteInfo)/多个读(ReadInfo),规则如下: rnrn<em>一个</em>人在写时,其他人不允许写。 rn<em>一个</em>人在写时,其他人不允许读。 rn<em>一个</em>人在读时,其他人不允许写。 rn<em>一个</em>人在读时,其他人允许读。 rnrn怎样进行<em>互斥</em>, 先谢拉!!!
一个线程和互斥的例子
主函数建立两个线程,生产者和消费者,生产者使<em>变量</em>递增,消费者使<em>变量</em>递减。建立<em>互斥</em>区//start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191@qq.com //@brief: <em>一个</em>线程和<em>互斥</em>的例子#include #include <pth
一个变量实现多重循环
该ppt主要讲述了编程之美的中国象棋问题,最终总结出用<em>一个</em><em>变量</em><em>实现</em>多层循环的公式。
一个互斥的问题...
这个 WaitForSingleObject 等待对象与 ReleaseMutex 必须是对应的?rn调用一次等待对象后,就必须在后面再次调用一下ReleaseMutex ???????rnrnrn我创建了<em>一个</em>命名的 <em>互斥</em>对象, 分别在两个进程中使用的,rnrn进程A,创建<em>互斥</em>对象, 进程B 打开那个<em>互斥</em>体对象,rnrn 我提出这问题,是由于 rnrn下面的是 进程B中的线程计数代码rn[code=C/C++]DWORD WINAPI funcProc(LPVOID Param)rnrn DWORD icount = 0;rn CString strtext = "";rn while (1)rn rn if(WaitForSingleObject(hmutex,INFINITE) ==WAIT_OBJECT_0);rn rn // while (1)rn rn strtext.Format("%d",icount++);rn OutputDebugString(strtext);rn if (icount > 5)rn rn icount = 0;rn ReleaseMutex(hmutex);rn // break;rn rn rnrn Sleep(1000);rn rn rnrn return 0;rn[/code]rnrnrn如下方所示的代码,当这个 icount 计数大于5的时候我调用了一次 ReleaseMutex去释放了<em>互斥</em>体对象,rn而此时 进程A的那个线程却获取不到<em>互斥</em>体被释放的信息,也就是说进程A中的那个线程,不在被执行了一直在哪儿等待rnrn现在的方法是 那个 icount计数也单独放置<em>一个</em>循环中,这样才能确保在releasemutex调用后,进程A中的线程可以继续执行一次,可是这样太麻烦了。。 不知道到底应该如何做才好,求解决。。。rn
如何实现一个数据表的互斥访问?
如何<em>实现</em>对<em>一个</em>数据表的<em>互斥</em>访问?1:用SQL怎么写 2:用delphi怎么做?
如何实现一个自己定义的IP头?
如题.
互斥实现一个程序的单开
[color=#FF0000]如果我用<em>互斥</em>体<em>实现</em><em>一个</em>程序的单开,那么在不修改这个程序的基础上,我怎么才能够让其多开rnrn我现在想知道原理rnrn有人说 <em>互斥</em>排斥 但是我这么获取到那个<em>互斥</em><em>变量</em>那?这个<em>互斥</em><em>变量</em>有办法清除吗?rn[/color]
vue 将一个变量作为methods名
其中buttonMethods 里的参数为该按钮实际调用的method &amp;lt;el-button v-for=&quot;button in buttonArr&quot; @click=&quot;buttonMethods(button.function)&quot;&amp;gt;{{button.label}}&amp;lt;/el-button&amp;gt; 其中 this.$options.methods是查询该组件下的所有meth...
如何将一个变量作为DIV显示的内容
rnrnPageTitle为我从JS中获取的<em>变量</em>,想让这个div显示这个<em>变量</em>的内容,是几个字,请各位帮忙给看看rnJS和JSP是分开的,JSP中引入JSrn下面是JS代码rn document.title="通知单";rn var PageTitle = document.title;
怎样把window对象作为structure的一个变量
怎样把window对象作为structure的<em>一个</em><em>变量</em>?rn我想把<em>一个</em>window作为structure的<em>一个</em><em>变量</em>传到另<em>一个</em>window中,如何<em>定义</em>window<em>变量</em>,如何赋值? rn
关于多线程原子操作一个疑问?
看到书上说k=k+1这样的<em>操作</em>并不是<em>原子</em><em>操作</em>,用汇编语言解释就是要经过mov,add,mov之类的<em>操作</em>之后才能完成加1的<em>操作</em>,如果在多线程环境下,有可能在其中的一步就会被别的进程影响(不然还要InterlockedIncrement()之类的函数干啥),,因此我认为在多线程环境下结果应该小于理论结果,但是我经过编程测试却发现即使在多线程环境下,结果却和理论结果一样!!!一下是我的测试程序:rn线程类:rn rnclass thread1 : public TThreadrnrnprivate:rnprotected:rn void __fastcall Execute();rnpublic:rn unsigned int count; //count用来记录累加次数rn __fastcall qin1(bool CreateSuspended);rn;rnrn 线程程序:rn void __fastcall thread1::Execute()rnwhile(1)rn k=k+1; // k为全局<em>变量</em>,所有线程对改<em>变量</em>进行累加,32位数rn this->count=this->count+1; //记录累加次数rnrnrn主程序:rnrnqq1=new thread1(true);rnqq1->count=0;rn qq2=new thread1(true);rnqq2->count=0;rnqq1->Resume();rnqq2->Resume();rnqq1->Suspend();rnqq2->Suspend();rnunsigned int p=qq1->count+qq2->count; //纪录两个线程所进行的累加次数rn。。。。rnrnrn如果按照非<em>原子</em><em>操作</em>理论,最后的k值应该小于或等于p,但实际上却大于等于p,而且差距小于等于2(属于正常范围),也就是表示:在<em>一个</em>线程的k=k+1中,没有被另外的线程中断。这是为什么呢?!!!!我的环境是:winxp,cb6,32位对齐方式!!!!!
可否把一个函数作为变量的值?
例如var s=sbyte.Parse;rn这样是编译不过的。我的目的是想要声明<em>一个</em>delegate来指向sbyte.Parse,就像C语言的函数指针那样。rnrn我该如何做到呢?
一个关于CString作为类成员变量的问题
我在<em>一个</em>基于对话框的工程里加入如下的<em>一个</em>类,然后在OnButton1中进行如下代码所示的<em>操作</em>,但是当执行到asd->m_str1="bbb";的时候,程序就会出错,请问是为什么?谢谢!!rnclass CMyClass rnrnpublic:rn CMyClass();rn virtual ~CMyClass();rn CString m_str;rn CString m_str1;rn int m_i1;rn;rnvoid CCStringTestDlg::OnButton1() rnrn CMyClass* asd;rn asd=new CMyClass;rn asd->m_str="aaa";rn asd->m_str1="bbb";rn asd->m_i1=1;rn delete asd;rn
如何将SQL作为一个变量插入数据库
String id ="0001";rnStromg name="aaaa";rnString sql1 ="update table set name='"+name+"'"where id='"+id+"'";rnrnString sql2="insert into table2 values(1,'"+sql1+"',sysdate)";rncom.execsql(sql2);rn在[color=#FF0000]不改变sql1语句[/color]如何将sql1作为字段插入数据库
能用一个变量作为数据库操作对象吗?
我有很多个表 但是<em>操作</em>是一样的,大多数是用来查询的。没次运行都要改数据库名字很麻烦 想用个<em>变量</em>代替可以吗?rn 例如rnselect * from tm1 rnselect * from tm2rn.....rnselect * from tmnrnrn换成<em>一个</em>rnselect * from <em>变量</em>名
如何将一个变量作为函数的参数
'noticeTypenoticeTitle'rnnoticeType是<em>一个</em><em>变量</em>,我试过<em>定义</em>它,但是不行,但是notice_show()的参数又是他,我的参数列表应该怎么写,rn如果参数是多个这样的<em>变量</em>,应该怎么写???
线程的创建及互斥变量
MFC多线程编程一、创建线程函数: 函数原型: HANDLEWINAP lCreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter,
公共变量互斥。。。。。。。。。。。
想<em>实现</em>的功能是这样子的:rn程序a.exe的调用b.dll的<em>一个</em>函数,我把a。exe中的<em>一个</em>列表地址作用这个导出函数的参数,这样b.dll就能够使用这个列表对象。rnrn现在a和b中都在<em>操作</em>这个列表,a中有可能删除列表中的某一项,不知道怎么<em>互斥</em>。本来想把TRTLCriticalSection传过去,结果不行。rn望高手指点下。。。。
互斥变量的使用
<em>操作</em>系统实验:线程<em>互斥</em>的<em>实现</em>,主要利用<em>互斥</em><em>变量</em>完成进程的<em>互斥</em>与同步
请问 我自己定义一个函数 怎么才能保证这个函数是一个原子操作函数
我知道有一对函数:InterLockedIncrement/InterLockedDecrement,好像他们只能对基本类型进行<em>操作</em>。但如果我的函数中对stl容器进行了<em>操作</em>,比如:rn在<em>一个</em>线程里我对<em>一个</em>map类型的容器进行了插入,而在另<em>一个</em>线程里对这个容器进行迭代rnmap nMap;rnDWORD WINAPI ThreadFunc1(LPVOID pParam)rnrn nMap.insert(make_pair(1,2));rn ...rnrnDWORD WINAPI ThreadFunc2(LPVOID pParam)rnrn map::iterator iter;rn for(iter=nMap.begin();iter!=nMap.end();iter++)rn rn ...rn rn ...rnrn假如我<em>定义</em>了这个迭代器后,在遍历的过程中,线程突然切换了,执行了插入<em>操作</em>,然后再回到ThreadFunc2接着遍历,这时候这个迭代器岂不是会出问题吗?
怎样实现一个文件互斥的访问程序?
如题,我写的程序如下:rnrn#include rn#include rnstruct flock* file_lock(short type, short whence)rnrnstatic struct flock ret ;rnret.l_type = type ;rnret.l_start = 0 ;rnret.l_whence = whence ;rnret.l_len = 0 ;rnret.l_pid = getpid() ;rnreturn &ret ;rnrnrnint main()rn int fd=open("/home/liougehooa/lo.txt",O_WRONLY|O_CREAT|O_EXCL|O_TRUNC,00777);rn long i=fcntl(fd,F_SETLKW,file_lock(F_WRLCK,SEEK_SET));rn while(1);rn return i;rnrn然后编译并后台运行,同时rm lo.txt,lo.txt还是被删掉了。
自己定义一个结构作为set的元素,请问有什么要求?
-
定义互斥变量
/* * libjingle * Copyright 2004--2005, Google Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are
一个原子操作的小例子-赛跑
生命<em>一个</em>atomic_flag对象,此对象是<em>一个</em>BOOL类的<em>变量</em>,有两种<em>操作</em> test_and_set   将atomic_flag对象设置为true并获得设置之前的值,如果atomic_flag为false,则test_and_set会将此值设置为true并返回false,如果为true,则设置为true,并返回true clear  将atomic_flag<em>变量</em>设置为false,无返回值 ...
多线程互斥变量不起作用????
Lock: TCriticalSection;rn .rn .rn .rn Lock := TCriticalSection.create;rn .rn .rn .rnrnrnTzipFile = class(Tthread)rn privatern FvclZip: TvclZiprn FflatGauge:TflatGauge; rn procedure mysetI;rn protectedrn procedure execute; override; rn publicrn constructor Create(vclZip: TvclZip; flatGauge: TflatGauge); virtual; end;rnrnrnprocedure TzipFile.mysetI;rnvarrn TxtFile: TextFile;rn FileHandle: Integer;rn I: INTEGER;rnbeginrnrn AssignFile(TxtFile,'d:\ok.txt');rn tryrn Append(TxtFile);rn for i := 0 to 100000 dorn WriteLn(TxtFile,inttostr(I));rn Flush(txtFile);rn finallyrn CloseFile(TxtFile)rn end;rn rn Lock.Acquire;rn tryrn AssignFile(TxtFile,'d:\ok.txt');rn tryrn Append(TxtFile);rn for i := 0 to 10000 dorn WriteLn(TxtFile,inttostr(I));rn Flush(txtFile);rn finallyrn CloseFile(TxtFile)rn end;rn finallyrn Lock.Release;rn end;rnend;rnrnprocedure TzipFile.Execute; 执行线程的方法 rnbeginrn tryrn //Synchronize(mysetI);rn mysetI;rn FreeOnTerminate := true; rn exceptrn //ShowMessage('zipFile Error'); end;rnend;rnrn我用Synchronize(mysetI)调用时一切正常,但是用mysetI非同步化时产生I/O读写异常,估计时多个线程同时读写同<em>一个</em>txt文件所知,但是我在读写的代码处已经加入Lock.Acquire<em>互斥</em>元阻塞线程,使线程<em>互斥</em>读写同<em>一个</em>txt文件,请问为什么不齐作用呢? rn 另外,如果不是<em>操作</em>同<em>一个</em>资源的时候,采用非同步化效率比Synchronize同步化高很多,因为同步化的过程亦只有在最后<em>操作</em>一下同<em>一个</em>资源,大部分时间不是<em>操作</em>相同的资源的,有什么方法可以提高Synchronize的效率!!rn 先谢过各位回答的朋友!rn 在线等待!
变量互斥访问
各位大侠好,我现在在<em>一个</em>类里,需要用到多线程访问<em>一个</em>BYTE[]成员<em>变量</em>,如何才能在<em>一个</em>线程访问时,保证另<em>一个</em>线程不对它做修改呢?能不能给个例子,非常感谢
作为变量和作为数据
char,描述定长的字符串,如果实际值不够<em>定义</em>的长度,系统将以空格填充。它的声明方式如下CHAR(L),L为字符串长度,缺省为1,作为<em>变量</em>最大32767个字符,作为数据存储在ORACLE8中最大为2000。rnrn请问什么样的情况下作为<em>变量</em>阿
利用Mutex互斥变量实现线程同步机制
利用mutex<em>互斥</em><em>变量</em><em>实现</em>线程同步机制,并输出循环1000000次所用的时间
就是为了一个明白
<em>一个</em>网页中,如何屏蔽 查看 “源文件”,以及“打印”
为了下载一个技术文档
为了下载<em>一个</em>技术文档,在此留下心得
ASP中,可以用一个字符串作为一个变量的名字吗????????????
-
为了实现一个功能,各位请帮忙。
要<em>实现</em>如下页面内的分栏效果:请问用哪个控件,给个例子,谢谢。rnhttp://www.lzxg.com/myarq.htm
多线程下变量原子操作的几种方法
 多线程下<em>变量</em><em>原子</em><em>操作</em>的几种方法 Note:1.2两个方法主要用于应用中【2种<em>操作</em>的性能是第一种的7-8倍,性能上优于第一种】,第三个方法主要应用于驱动层的。 线程锁:如下例子:    pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER;       pthread_mutex_lock(&count_lock);
菜鸟一个,请问如何将变量的值作为另一变量变量
各位帅哥靓姐们: rn 请问在VB.NET中,如何将<em>一个</em><em>变量</em>的值作为另<em>一个</em><em>变量</em>的<em>变量</em>名呢?如果可以的话,也请举个例子。 rn 谢谢啦!
两个线程同时读写一个变量需不需要互斥
两个线程同时读写<em>一个</em><em>变量</em>需不需要<em>互斥</em>?rn比如读写<em>一个</em>struct?double?int?char?rn哪些情况下需要<em>互斥</em>?rnrn比如读写<em>一个</em>char,如果能在同<em>一个</em>CPU时钟周期内完成,那么是否就无需<em>互斥</em>?rn如果读写<em>一个</em>struct,如果无法在同<em>一个</em>CPU时钟周期内完成,那么是否就必须<em>互斥</em>?rnrn哪位朋友可以解释一下?
如何传送一个自己定义的结构?
send函数要求传送字符串,我<em>定义</em>了<em>一个</em>自己的结构,有<em>一个</em>整形,4个浮点型和<em>一个</em>系统rn时间。我想在我的程序中传送这个结构,应该怎么做?rn另外将整型、浮点型和系统时间转换成字符串的函数是什么?实在不行我把他们都转换成rn字符串再传送。rn我的水平比较菜,希望能您的答复能给具体一些。
一个关于自己定义auto_ptr的问题
帮忙调试一下rn///////////////auto_ptr.h/////////////////rntemplate rnstruct auto_ptr_ref;rnrntemplate rnclass auto_ptrrnrn public:rn typedef Typename elemtype;rnrn explicit auto_ptr(elemtype *ptr=0) throw();rn rn auto_ptr(auto_ptr&) throw();rn template rn auto_ptr(auto_ptr&) throw();rnrn auto_ptr& operator=(auto_ptr&) throw();rn template rn auto_ptr& operator=(auto_ptr&) throw();rnrn ~auto_ptr() throw();rnrn Typename* get() const throw();rn Typename& operator*() const throw();rn Typename* operator->() const throw();rnrn Typename* release() throw();rn void reset(Typename *ptr=0) throw();rn rn auto_ptr(auto_ptr_ref) throw();rn auto_ptr& operator=(auto_ptr_ref) throw();rn template operator auto_ptr_ref() throw();rn template operator auto_ptr() throw();rn rn;rn/////////////////////////////////////////////rnrn////////////////////////////////auto_ptr.cpp///////////rn#include "auto_pair.h"rnrntemplate rnstruct auto_ptr_ref rnrn T *rp;rn auto_ptr_ref(T *ptr=0):rp(ptr);rn;rnrntemplate rnclass auto_ptrrnrn private:rn T *op;rn public:rn typedef T elemtype;rnrn explicit auto_ptr(elemtype *ptr=0) throw()rn rn op=ptr;rn ptr=0;rn ;rn rn auto_ptr(auto_ptr& e) throw():op(e.release());rnrn template rn auto_ptr(auto_ptr& e) throw():op(e.release());rn rn auto_ptr operator=(auto_ptr& e):op(e.release())rn rn return *this;rn ;rn template rn auto_ptr operator=(auto_ptr& e) throw():op(e.release())rn rn return *this;rn ;rn rn ~auto_ptr() throw()rn rn delete op;rn rn rn elemtype* get() const throw()rn rn return op;rnrn rn elemtype& operator*() const throw()rn rn return *op;rn rn elemtype* operator->() const throw()rn rn return op;rn rn rn elemtype* release() throw()rn rn elemtype *temp(op);rn op=0;rn return temp;rn rn rn void reset(elemtype *ptr=0) throw();rn rn if(op!=ptr)rn rn delete op;rn op=ptr;rn rnrn rn rn auto_ptr(auto_ptr_ref& e) throw():op(e.rp);rn auto_ptr& operator=(auto_ptr_ref& e) throw():op(e.rp)rn rn return *this;rn rn templatern operator auto_ptr() throw rn rn return auto_ptr(release());rn rn template rn operator auto_ptr_ref() throw()rn rn return auto_ptr_ref(release());rn rnrn rn;rn//////////////////////////////////////////////////////////////rnrn/////////////////////////////////debug//////////////////////////rn--------------------Configuration: auto_pair - Win32 Debug--------------------rnCompiling...rnauto_pair.cpprnf:\c++\auto_pair\auto_pair.h(14) : error C2535: '__thiscall auto_ptr::auto_ptr(class auto_ptr &)' : member function already defined or declaredrn f:\c++\auto_pair\auto_pair.h(12) : see declaration of 'auto_ptr::auto_ptr'rn f:\c++\auto_pair\auto_pair.h(34) : see reference to class template instantiation 'auto_ptr' being compiledrnf:\c++\auto_pair\auto_pair.h(18) : error C2535: 'class auto_ptr &__thiscall auto_ptr::operator =(class auto_ptr &)' : member function already defined or declaredrn f:\c++\auto_pair\auto_pair.h(16) : see declaration of '='rn f:\c++\auto_pair\auto_pair.h(34) : see reference to class template instantiation 'auto_ptr' being compiledrnf:\c++\auto_pair\auto_pair.cpp(8) : error C2953: 'auto_ptr_ref' : template class has already been definedrn f:\c++\auto_pair\auto_pair.cpp(8) : see declaration of 'auto_ptr_ref'rnf:\c++\auto_pair\auto_pair.cpp(92) : error C2953: 'auto_ptr' : template class has already been definedrn f:\c++\auto_pair\auto_pair.cpp(92) : see declaration of 'auto_ptr'rnError executing cl.exe.rnrnauto_pair.obj - 4 error(s), 0 warning(s)rn////////////////////////////////////////////////////////////////////
请问如何在fastreport里面使用一个自己定义变量
我现在通过fastreport里面的报表-><em>变量</em>->编辑<em>变量</em>里面设置了<em>一个</em><em>变量</em>,比如说 frn现在我们在脚本里面给它赋值.rn我直接用f=100,他说我的f,没有<em>定义</em>rn我用他说有异常的""rn请教一下呀
自己定义一个SVN管理规则
根据BPD(项目简称)系统项目特点,使用SVN管理项目源码、文档、程序、运行环境的结构如下图所示: 结构说明 1.     Trunk:主干,包含系统的基础架构,核心功能,通用库,源码主干作为所有分支的基版本。 2.     Branches:分支,按客户名称创建目录进行扩展,各客户划分三类(目录结构)分支: (1)master作为版本发布维护的主分支,作用只有两个,合并和发布; (
MFC自己定义一个工具栏无法显示
在MFC 做了<em>一个</em>工具栏,无法显示, 怎么回事,求高手解答rnif (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | CBRS_TOP | WS_VISIBLE rn | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||rn !m_wndToolBar.LoadToolBar(IDR_TOOLBAR))rn rn TRACE0("Failed to create toolbar\n");rn return -1; // fail to creatern rn m_wndToolBar.SetButtonText(0, "主页");rn m_wndToolBar.SetButtonText(2, "日志");rn m_wndToolBar.SetButtonText(4, "业务");rn m_wndToolBar.SetButtonText(6, "申请");rn m_wndToolBar.SetButtonText(8, "更新");rn m_wndToolBar.SetButtonText(10, "撤销");rn m_wndToolBar.SetButtonText(12, "恢复");rn m_wndToolBar.SetButtonText(14, "证书");rn m_wndToolBar.SetButtonText(16, "发布");rn m_wndToolBar.SetButtonText(18, "同步");rn m_wndToolBar.SetButtonText(20, "锁定");rn m_wndToolBar.SetButtonText(22, "退出");rn m_wndToolBar.SetButtonText(24, "关于");rn m_wndToolBar.SetSizes(CSize(36, 24), CSize(1, 1));
20180805:自己定义一个count函数
# encoding=utf-8 def count_occurence(s,letter):     if not isinstance(s,str) or not isinstance(letter,str):         return 0     times =0     if letter not in s:         return 0     else:         f...
一个类似互斥的问题。
现在创建了N个相同的窗体,我想<em>实现</em>的是:当鼠标移动到某<em>一个</em>窗体上时,这个窗体的背景就高亮,而要其它窗体的颜色都灰掉。rn现在我困惑的是:当我鼠标移动到某<em>一个</em>窗体时(窗体背景<em>变量</em>很好<em>实现</em>),怎么通知其他N-1个窗体变灰?关键是这个“通知”怎么<em>实现</em>?
请问一个互斥的处理问题,谢谢。
rn标准C代码来<em>实现</em>rnrn有<em>一个</em>数组,数组元素为结构体,其中有<em>一个</em>bool<em>标记</em>量 Flag;rnrn有两个进程 A B ;rnA B 两进程是异步运行rnrnA每次传递<em>一个</em>指向数组元素的指针给B,传递前将Flag设置为True;rnrn[color=#FF0000]B在接收到指针后[/color],处理指针指向的元素,处理完 [color=#FF0000]将Flag设置为False[/color];rnrnA发送指针给B后,会再次在剩余的数组元素中寻找 Flag 为False的元素,将元素中的数据填充后,rn将Flag设置为True,再传递给B。rnA寻找数组中Flag 为False的元素时,采用轮询方式。rnrn那么这样<em>实现</em>的话,A写<em>标记</em>位的时候,B不会产生冲突,但B写<em>标记</em>位的时候,A可能正在读(但如果读到的为True,即表示B没有处理完,那么就认为B没有处理完),这时候,需要加<em>互斥</em>保护么?rnrnrn谢谢!!!
第三章 函数——自己定义一个函数
目录def语句和参数返回值和return语句None值关键字参数和print()print(,end='')print(,sep='')局部和全局作用域 第一章我们学习了print()、input()、len()这样的python内建函数,其实我们也可以自己编写函数。这些函数就像一些有特定功能的小版块,我们可以在想要的时候随时调用他们。 def语句和参数 先看<em>一个</em>栗子 def hello(name...
怎样去掉一个自己定义的向导?
我自已做了<em>一个</em>向导,做成了程序之后,以后VC的new project中就有了这个向导,我想把它去掉,怎么做?rn
生成器和迭代器(自己定义一个迭代器)
1迭代器   迭代器是⼀个可以记住遍历的位置的对象。迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。   直接作⽤于 for 循环的数据类型有以下⼏种: ⼀类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等; ⼀类是 generator ,包括⽣成器和带 yield 的generator function。 ...
如何自己定义一个abc://的协议
比如说,网页里有<em>一个</em>链接 abc://123.htmlrn关联到自己的<em>一个</em>客户端程序.我记得就是修改注册表里的<em>一个</em>两个键值,想不起来了..rnrn谢谢.
SQLite互斥访问的一个问题
在sqlite中,如果进程A取得<em>一个</em>数据库的独享锁,而进程B想访问此数据库,如果是想“读取”数据库,结果是等待进程A释放独享锁再读取还是立即返回?rn如果进程B想“写入”数据库结果又会怎么样?
动态添加一个HTML标记
// 添加html标签    var inpu=document.getElementById('ip');    inpu.onclick=addText;     function addText(){     var aa=document.createElement('input');     aa.type='text;';      aa.name='文本框';    
标记的javascript一个问题
我的html语句rn display.insertAdjacentHTML("AfterBegin" ,"大家 ");rn但是在javascript中selectwho不执行rn如果改成大家就好用,请问怎么一回事呢?rn
关于aspx的一个标记
_rnPublic Class TS_W_Lstlst_090rn Inherits DataSetrn描述的是什么意思rn 谢谢
一个奇怪的标记
阅读代码时,看到这样<em>一个</em>问题。rn最近在学习jsp,但是看书上,好象没有这样字的例子。rn哪位有好的网址,或者直接告诉我。rn谢。rn菜鸟敬上!
一个简单的标记回收内存垃圾清理实现
源代码来自:https://github.com/munificent/mark-sweeprn贴个别人的源代码主要是想问个问题,里面有这样<em>一个</em>函数:rn[code=c]void sweep(VM* vm)rnrn Object** object = &vm->firstObject;rn while (*object) rn if (!(*object)->marked) rn /* This object wasn't reached, so remove it from the list and free it. */rn [color=#FF0000]Object* unreached = *object;rnrn *object = unreached->next;rn free(unreached);[/color]rnrn vm->numObjects--;rn else rn /* This object was reached, so unmark it (for the next GC) and move on torn the next. */rn (*object)->marked = 0;rn object = &(*object)->next;rn rn rn[/code]rn那地方虽然unreached空间被释放了,但是前<em>一个</em>节点不会留下悬挂指针吗?
一个struts标记的写法
rn上面的语句<em>定义</em>了<em>一个</em>bean,这个bean中有个headDto,headDto中有个update属性,现在想把update的属性设置为true,该如何写啊。rn自己试了一上午,没搞定。哪位帮帮忙
标记索引的一个问题
<em>标记</em>索引打印从0开始rnrn如何设置索引打印显示从1开始rnrn
事务_标记一个事务
本课程基于微软新的SQL Server 2016,讲解了数据完整性、视图、索引、存储过程、流程控制、游标、事务、函数、触发器等技术;n本课程将分为四个部分:基本<em>操作</em>与查询、查询、数据库编程、数据库管理,由浅入深的讲解SQL Server 2016技术体系,本课程是数据库编程。n欢迎各位学员加群431277381,一起交流学习。
一个关于函数互斥的问题
怎样<em>实现</em>呢rnrnrn比如A 过程和B 过程都要用到某个函数functionrnrn但function保证A.B不能同时使用,如果同时调用了function,那么后调用 的那个过程就要延迟执行function.rnrnrnrn
这是一个意外的标记标记应为“NAME”。
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 rnrn分析器错误信息: 这是<em>一个</em>意外的<em>标记</em>。<em>标记</em>应为“NAME”。 行 5,位置 5。rnrn源错误: rnrnrn行 3: rn行 4: rn行 6: rn行 7: rn rnrn源文件: D:\web2\web.config 行: 5 rnrnrn请问我该如何修改呢?我不在web.config 中配置,直接在.cs中写连库的代码就可以成功。rn在web.config中我该如何配置呢?rnrn
redis lua脚本实现原子操作
通过lua脚本封装<em>原子</em><em>操作</em>,对<em>一个</em>key设置比旧数据大的数值,并返回大的数值;如果redis里面不存在该key,直接设置。 eval "local a=redis.call('GET',KEYS[1]) if a==false then redis.call('SET',KEYS[1],ARGV[1]) return ARGV[1] elseif tonumber(ARGV[1])&gt;t...
Java实现原子操作-CAS
参考书籍: Java 并发编程的艺术 使用循环CAS<em>实现</em><em>原子</em><em>操作</em> public class Counter { private AtomicInteger atomic = new AtomicInteger(0); private int i = 0; private static int THRESHOLD_NUM = 100; private sta...
memcache CAS实现原子操作
背景: 多个分布式系统<em>实现</em>计数器累加。    protected Boolean execute() throws Exception {   // 获取key         String memcachedKey = "testCAS";         Boolean exist = true;         try {             exist = memcach
Linux-arm原子操作实现
Linux-ARM <em>原子</em><em>操作</em>的<em>实现</em> 单 cpu 系统 在单个cpu的系统中,<em>原子</em><em>操作</em>是通过关闭中断<em>实现</em>的。 关闭中断可以避免进程和中断,进程和进程之间的资源共享访问问题(进程的调度程序依靠中断<em>实现</em>调度)。linux怎么<em>实现</em>进程调度?linux进程调度的策略? smp 系统 在smp系统中,仅仅关闭当前的 cpu中断无法避免两个cpu之间的资源竞争,而且关闭中断对系统的实时...
如何才能把标记中的颜色值作为变量
我想把颜色值作为<em>变量</em>,可以吗,但反复试了,似乎不行,请问该怎么办?rnvar fontColors='blue';rndocument.write("…………rn
Java多线程互斥访问变量
Java多线程<em>互斥</em>访问比较简单,在方法前面加上synchronize修饰则变为同步方法。下面是例子:class WorkThread extends Thread{ private CourruptedData data = null ; private int type = 0 ; public WorkThread(CourruptedData _data,int _ty
CPU实现原子操作的方法
在学习并发编程时,我们知道,多条指令不被分割<em>操作</em>被成为<em>原子</em><em>操作</em>。但是,对于CPU是如何保证<em>原子</em>性的呢。 1、对于单核CPU 对于单核cpu,所有的事件都是串行,执行完第一才会去执行第二个。所以,单核CPU<em>实现</em><em>原子</em><em>操作</em>比较简单。 在单核CPU中,每个指令都保证是<em>原子</em>的,即中断只会在指令之间发生。Intel x86指令集支持内存<em>操作</em>数的inc<em>操作</em>,将多条指令的<em>操作</em>在一条指令内完成。因为进程的上下...
大学的学习部章程,给大家提供个模板下载
出入大学时写的学习部章程,给大家做个借鉴 相关下载链接:[url=//download.csdn.net/download/mitchell2010/2306751?utm_source=bbsseo]//download.csdn.net/download/mitchell2010/2306751?utm_source=bbsseo[/url]
facebookforios tutorial下载
facebook skd集成到ios 工程当中的教程,是很好的教程呀。 相关下载链接:[url=//download.csdn.net/download/favormm/3199004?utm_source=bbsseo]//download.csdn.net/download/favormm/3199004?utm_source=bbsseo[/url]
删除office注册表信息下载
卸载了office2003 , office2007 或者 office2010 的时候,需要清除注册表的相关信息;为此写了个脚本来删除,更方便。 相关下载链接:[url=//download.csdn.net/download/likunwen_001/5623097?utm_source=bbsseo]//download.csdn.net/download/likunwen_001/5623097?utm_source=bbsseo[/url]
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件
我们是很有底线的