我想同步线程来访问公共变量.想象一下,我有N个线程,每个线程都可以访问TSyncThreds类型变量的全局实例.
我可以调用方法IncCount,DecCount吗?或者我会遇到并发线程访问对象的同一个实例的问题?
我只是同步访问FCcounter变量...
type
TSyncThreads = class
public
FCounterGuard: TCriticalSection;
FCounter: integer;
FSimpleEvent: TSimpleEvent;
constructor Create();
procedure Wait();
procedure IncCounter();
procedure DecCounter();
end;
var
SyncThread: TSyncThreads;
implementation
uses
Math, Windows, Dialogs;
{ TSyncThreads }
procedure TSyncThreads.DecCounter;
begin
FCounterGuard.Acquire;
Dec(FCounter);
if FCounter = 0 then
FSimpleEvent.SetEvent;
FCounterGuard.Release;
end;
procedure TSyncThreads.IncCounter;
begin
FCounterGuard.Acquire;
Inc(FCounter);
FCounterGuard.Release;
end;
constructor TSyncThreads.Create();
begin
FCounter := 0;
FSimpleEvent := TSimpleEvent.Create;
FCounterGuard := TCriticalSection.Create;
FSimpleEvent.ResetEvent;
end;
procedure TSyncThreads.Wait;
var
ret: TWaitResult;
begin
ret := FSimpleEvent.WaitFor(INFINITE);
end;
Run Code Online (Sandbox Code Playgroud) 我正在创建一个在 Ubuntu 14 上安装 docker 的方法。
如何将上面的命令翻译给厨师?}
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Run Code Online (Sandbox Code Playgroud)
因此使用 apt-repository 资源:
apt_repository "???" do
uri ???
distribution ???
components ???
keyserver "hkp://p80.pool.sks-keyservers.net:80"
key "58118E89F3A912897C070ADBF76221572C52609D"
end
Run Code Online (Sandbox Code Playgroud) 我们希望使用Docker容器在集群环境中运行我们的批处理作业.我们正在评估使用AWS ECS Container Service/Chronos/Mesos.据我所知,Apache Mesos具有EC2所具有的一些重叠特性/目的,如集群管理.Chronos是一个分布式调度程序.
我很难将所有这些技术联系起来以创建一个架构!
EC2服务取代Mesos?调度程序怎么样?
我们是一个小团队,在集群开发方面几乎没有经验.哪个堆栈更适合我们的批处理?
编辑 我做了一个巨大的编辑,我想现在我理解架构:
这是一张由Mesos管理的两个集群的示例图片.
阅读ECS容器服务文档(http://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduling_tasks.html),AWS正在整合ECS与Mesos Apache Framework.所以我想在将来使用mesos框架来管理ECS集群中的资源.因此,可以使用Chronos(用于批量调度)和Marathon(用于长时间运行的app).
编辑 此时此刻,我们没有分布式工作,例如hadoop工作或火花工作.我们的工作要简单得多,在EC2的单个实例上运行.我们计划使用Docker来运行批处理运行的作业.
我想加强EC2的安全性.所以我有很多EC2实例和许多需要访问这些EC2实例的开发人员.每个开发人员都有自己的密钥对(公共/私有),并在每个EC2实例上添加公钥.
我也将创建一个堡垒主机.对于堡垒主机,最好的方法是什么?添加开发人员的所有pub键?或者只在密钥对上创建并为开发人员分发它?
我正在尝试创建一个 CloudFormation 堆栈,但得到:
id 为气流层的堆栈不存在或已被删除
气流层是我正在创建的云形成堆栈的名称。自动引用我正在创建的堆栈的正确方法是什么?
{
"Description": "AWS CloudFormation to airflow",
"Resources": {
"AirflowEC2": {
"Metadata": {
"AWS::CloudFormation::Init": {
"configSets": {
"install_airflow": [
"install_airflow"
]
},
"install_airflow": {
"commands": {
"test": {
"command": "echo Ola mundo"
}
}
}
}
},
"Properties": {
"ImageId": "ami-9abea4fb",
"InstanceType": "t2.micro",
"KeyName": "CLOUD_ADMIN",
"SecurityGroupIds": [
"sg-03851765"
],
"SubnetId": "subnet-0820796d",
"Tags": [
{
"Key": "Name",
"Value": "ec2-airflow-production"
}
],
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#!/bin/bash -xe\n",
"sudo apt-get update\n",
"sudo apt-get …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 EC2 UserData 脚本安装气流。我需要使用非 root 用户 (ec2-user) 运行一些命令。请参阅下面的脚本:
UserData:
Fn::Base64: !Sub |
#!/bin/bash
set -xe
# Install GCC
yum install -y gcc
# Install Dependencies
pip install boto3 awscli markupsafe six
export AIRFLOW_GPL_UNIDECODE=yes
export AIRFLOW_HOME=/home/ec2-user/airflow
pip install apache-airflow[crypto,postgres]
su - ec2-user
whoami
PATH=$PATH:/usr/local/bin
airflow initdb
Run Code Online (Sandbox Code Playgroud)
我刚刚调查了日志,似乎该命令su - ec2-user不起作用并且whoami正在返回root user.
+ su - ec2-user
Last login: Sat Aug 10 15:59:37 UTC 2019 from ip-10-1-13-234.us-west-2.compute.internal on pts/0
+ whoami
root
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个int数组写入fstream,但是当我调用时,我得到了一个异常fstream.write.
我可以fstream用来将int数组写入文件吗?
int main(int argc, char * argv[])
{
fstream amostra("D:\\Amostra.txt", ios::out | ios::binary);
const int total_elements_block = 1024;
const int buffer_size = total_elements_block;
const int total_buffer = 10;
int * buffer = new int [buffer_size];
//for (int j=0; j<total_buffer; j++){
for (int i =0; i<total_elements_block; i++){
buffer[i] = i;
}
amostra.write((char *)(&buffer), total_elements_block*4);
//}
amostra.close();
delete []buffer;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我读了一个整数二进制文件到int vector.当我使用Sort函数时,向量归零...
我知道矢量没问题!
可能有什么不对?
std::ifstream input("D:\\Amostra.txt", ios::binary);
vector<int> v (NumBlocks*ELEMENTS_PER_BLOCK*sizeof(int));
input.read(reinterpret_cast<char *>(&v[0]), NumBlocks*ELEMENTS_PER_BLOCK*sizeof(int));
sort(v.begin(), v.end());
for (int i=0; i<ELEMENTS_PER_BLOCK*NumBlocks; i++){
cout << v[i] << endl;
};
system("pause");
Run Code Online (Sandbox Code Playgroud) 我正在使用内存缓冲区写入文件.我将每个记录复制到内存缓冲区,然后将其刷新到磁盘.
码:
char * OutBuffer;
char *pt;
OutBuffer = new char(BufferSize);
pt = OutBuffer;
for (int i=0; i<(FileSize / RECORD_SIZE); i++){
if (((i % recordsPerBlock)==0) && (i>0)){
FileSortHandle->write(OutBuffer, BufferSize);
pt = OutBuffer;
}
else{
memcpy(pt, minRecord, RECORD_SIZE);
pt = pt + RECORD_SIZE;
}
minRecord = nullptr;
}
Run Code Online (Sandbox Code Playgroud)
当我调用"FileSortHandle-> write(OutBuffer,BufferSize);" VS显示:
"Windows在STL_Test2.exe中触发了一个断点.
这可能是由于堆的损坏,这表明STL_Test2.exe或其加载的任何DLL中存在错误.
这也可能是由于用户在STL_Test2.exe具有焦点时按下F12.
输出窗口可能包含更多诊断信息."
有人能帮帮我吗?
amazon-ec2 ×4
c++ ×3
buffer ×1
chef-infra ×1
chef-recipe ×1
clover ×1
cron ×1
delphi ×1
docker ×1
eclipse-gef ×1
linux ×1
mesos ×1
pointers ×1
scheduler ×1
security ×1
sorting ×1
stream ×1
user-data ×1
vector ×1
zest ×1